Prévention des dépendances, quelques pistes pour les parents
Node.js et NPM: de la récupération de dépendances à la publication de paquets
-
Upload
gelnior -
Category
Technology
-
view
494 -
download
2
description
Transcript of 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
NodeJS
- Environnement d'exécution asynchrone- Basé sur V8 - Permet d'utiliser Javascript côté serveur- Mais surtout ...
Une communauté très active !
NPM
- Gestionnaire de paquets (Equivalent de pip en python ou gem en Ruby)- Registry (annuaire, moteur de recherche)- Basé sur un manifeste (package.json)
{ "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"}
Dépendances
{ "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"}
{ "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"}
npm install [--production]
npm install --save colors
npm install -g express
Récupération
# 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
packages NPM utiles
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)
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)
Build
bin/americanotests/tests.coffeeCakefileREADMEmain.coffeepackage.json
bin/americanotests/tests.coffeeCakefileREADMEmain.coffeemain.jspackage.json
Objectif
compilation des sources+ raccourci pour les tests+ identification du binaire
{ "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" }}
{ "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" }}
{ "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" }}
Outils de build
- Grunt- Cake- Gulp- Broccoli
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']);};
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."
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']);
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', {});
Publication
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
npm version [patch|minor|major]
Up de version
npm publish
Apprenez Node.js avec Cozy !
http://cozy.io/hack/getting-started/
@mycozycloudcozy.io