Transcript
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