View
494
Download
2
Category
Preview:
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
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 <frank@cozycloud.cc>", "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 <frank@cozycloud.cc>", "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 <frank@cozycloud.cc>", "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 <frank@cozycloud.cc>", "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 <frank@cozycloud.cc>", "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 <frank@cozycloud.cc>", "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 grunt@0.4.4$ npm install –-save-dev grunt-contrib-coffee@0.10.0$ 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 gulp@3.6.2$ npm install –-save-dev gulp-coffee@1.4.3$ 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 broccoli@0.12.0$ npm install –-save-dev broccoli-coffee@0.1.0 $ 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 "vous@exemple.fr"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
Recommended