31
Node.js et NPM De la gestion de dépendances à la publication de packages

Node.js et NPM: de la récupération de dépendances à la publication de paquets

  • Upload
    gelnior

  • View
    494

  • Download
    2

Embed Size (px)

DESCRIPTION

Une présentation sur le cycle de vie d'un module Node.js. Dans cette présentation on apprend comment utiliser NPM pour bien décrire son projet et ses dépendances. Puis on apprend comment préparer et publier son projet. Présentation faite à Solution Linux 2014. http://www.solutionslinux.fr/

Citation preview

Page 1: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Node.js et NPMDe la gestion de dépendances à la publication de packages

Page 2: Node.js et NPM: de la récupération de dépendances à la publication de paquets

NodeJS

- Environnement d'exécution asynchrone- Basé sur V8 - Permet d'utiliser Javascript côté serveur- Mais surtout ...

Page 3: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Une communauté très active ! 

Page 4: Node.js et NPM: de la récupération de dépendances à la publication de paquets

NPM

- Gestionnaire de paquets (Equivalent de pip en python ou gem en Ruby)- Registry (annuaire, moteur de recherche)- Basé sur un manifeste (package.json)

Page 5: Node.js et NPM: de la récupération de dépendances à la publication de paquets

{ "name": "americano", "version": "0.1.0", "description": "Express simplifié !", "author": "Frank Rousseau <[email protected]>", "dependencies": { "colors": "0.x.x", "express": "3.3.x", "commander": "2.3.1", "printit": "0.2.x" }, "devDependencies": { "mocha": "0.5.x" }, "engine": "node >= 0.4.1"}

Page 6: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Dépendances

Page 7: Node.js et NPM: de la récupération de dépendances à la publication de paquets

{ "name": "americano", "version": "0.1.0", "description": "Express simplifié !", "author": "Frank Rousseau <[email protected]>", "dependencies": { "colors": "0.x.x", "express": "3.3.x", "commander": "2.3.1", "printit": "0.2.x" },, "devDependencies": { "mocha": "0.5.x" }, "engine": "node >= 0.4.1"}

Page 8: Node.js et NPM: de la récupération de dépendances à la publication de paquets

{ "name": "americano", "version": "0.1.0", "description": "Express simplifié !", "author": "Frank Rousseau <[email protected]>", "dependencies": { "colors": "0.x.x", "express": "3.3.x", "commander": "2.3.1", "printit": "0.2.x" }, "devDependencies": { "mocha": "0.5.x" }, "engine": "node >= 0.4.1"}

Page 9: Node.js et NPM: de la récupération de dépendances à la publication de paquets

npm install [--production]

npm install --save colors

npm install -g express

Récupération

Page 10: Node.js et NPM: de la récupération de dépendances à la publication de paquets

# affiche l'arbre des

# dépendances npm ls

# affiche les dépendances # obsolètes npm outdated

# Génère les dépendances # manquantes

pakmanager deps

Page 11: Node.js et NPM: de la récupération de dépendances à la publication de paquets

packages NPM utiles

Page 12: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Très populaires

- ExpressJS/Sails/Americano (framework web)- Request/Request-json (requêtage simplifié)- Underscore/Lodash (utilitaires tableaux)- Commander/Optimist/Nopt (parsers d'arguments)- Jade (moteur de template)- Moment (date)- Stylus (pré-processeur CSS)

Page 13: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Populaires

- Cheerio (scraping)- Through (gestion de flux)- Glob (recherche de fichiers)- Rimraf/fs-extra (rm -rf, add-on file-system) - Shelljs (Bash dans node)- Chalk (coloration sortie console)

Page 14: Node.js et NPM: de la récupération de dépendances à la publication de paquets
Page 15: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Build

Page 16: Node.js et NPM: de la récupération de dépendances à la publication de paquets
Page 17: Node.js et NPM: de la récupération de dépendances à la publication de paquets

bin/americanotests/tests.coffeeCakefileREADMEmain.coffeepackage.json

bin/americanotests/tests.coffeeCakefileREADMEmain.coffeemain.jspackage.json

Objectif

compilation des sources+ raccourci pour les tests+ identification du binaire

Page 18: Node.js et NPM: de la récupération de dépendances à la publication de paquets

{ "name": "americano", "version": "0.1.0", "description": "Express simplifié !", "author": "Frank Rousseau <[email protected]>", "dependencies": { "colors": "0.x.x", "express": "3.3.x", "commander": "2.3.1", "printit": "0.2.x" }, "devDependencies": { "mocha": "0.5.x" }, "engine": "node >= 0.4.1", "main": "./main.js", "scripts": { "prepublish": "cake build", "test": "cake tests" }, "bin": { "americano": "./bin/americano" }}

Page 19: Node.js et NPM: de la récupération de dépendances à la publication de paquets

{ "name": "americano", "version": "0.1.0", "description": "Express simplifié !", "author": "Frank Rousseau <[email protected]>", "dependencies": { "colors": "0.x.x", "express": "3.3.x", "commander": "2.3.1", "printit": "0.2.x" }, "devDependencies": { "mocha": "0.5.x" }, "engine": "node >= 0.4.1", "main": "./main.js", "scripts": { "prepublish": "cake build", "test": "cake tests" <= $ npm test }, "bin": { "americano": "./bin/americano" }}

Page 20: Node.js et NPM: de la récupération de dépendances à la publication de paquets

{ "name": "americano", "version": "0.1.0", "description": "Express simplifié !", "author": "Frank Rousseau <[email protected]>", "dependencies": { "colors": "0.x.x", "express": "3.3.x", "commander": "2.3.1", "printit": "0.2.x" }, "devDependencies": { "mocha": "0.5.x" }, "engine": "node >= 0.4.1", "main": "./main.js", "scripts": { "prepublish": "cake build", "test": "cake tests" }, "bin": { "americano": "./bin/americano" }}

Page 21: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Outils de build

- Grunt- Cake- Gulp- Broccoli

Page 22: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Grunt - Gruntfile$ npm install -g grunt-cli$ npm install –-save-dev [email protected]$ npm install –-save-dev [email protected]$ grunt

module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), coffee: { compile: { files: { './main.js': './main.coffee' }}}});

grunt.loadNpmTasks('grunt-contrib-coffee'); grunt.registerTask('default', ['coffee']);};

Page 23: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Cake - Cakefile$ npm install -g coffee-script$ cake build

task "build", "Compile coffee files to JS", ->

console.log "Compile main file..." command = "coffee -c main.coffee" exec command, (err, stdout, stderr) -> if err console.log "Error: \n #{err}" process.exit 1 else console.log "Compilation succeeded."

Page 24: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Gulp - Gulpfile.js$ npm install -g grunt-cli$ npm install –-save-dev [email protected]$ npm install –-save-dev [email protected]$ gulp

var gulp = require('gulp');var coffee = require('gulp-coffee');

gulp.task('scripts', function() { return gulp.src(['./main.coffee']) .pipe(coffee()) .pipe(gulp.dest('./'));});

gulp.task('default', ['scripts']);

Page 25: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Broccoli – Brocfile.js$ npm install -g broccoli$ npm install –-save-dev [email protected]$ npm install –-save-dev [email protected] $ brocoli build ./build

var filterCoffeeScript = require('broccoli-coffee');

module.exports = filterCoffeeScript('src', {});

Page 26: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Publication

Page 27: Node.js et NPM: de la récupération de dépendances à la publication de paquets

npm set init.author.name "Votre nom"npm set init.author.email "[email protected]"npm set init.author.url "http://votresite.fr"

npm adduser

Enregistrement

Page 28: Node.js et NPM: de la récupération de dépendances à la publication de paquets

npm version [patch|minor|major]

Up de version

Page 29: Node.js et NPM: de la récupération de dépendances à la publication de paquets

npm publish

Page 30: Node.js et NPM: de la récupération de dépendances à la publication de paquets
Page 31: Node.js et NPM: de la récupération de dépendances à la publication de paquets

Apprenez Node.js avec Cozy ! 

http://cozy.io/hack/getting-started/

@mycozycloudcozy.io