NPM – Un peu plus qu’un gestionnaire de librairies

Dans l'écosystème du développement Web, l'incontournable Node Package Manager est l'outil de gestion des dépendances le plus naturel lorsque que l'on démarre un projet JavaScript.

npm-logo

Et on y adjoint souvent un orchestrateur gérant les taches de packaging (Gulp, Grunt, etc.). Avec les "bundlers" (Webpack, Browserify) de plus en plus fourni en fonctionnalités (minification, versioning...), la question du rôle de ces orchestrateurs se pose car il ne se résume alors qu'en l'exécution de simples macro-commandes.

Package.json : des macro-commandes avec l'entrée "scripts"

L'entrée "scripts" permet de définir un ensemble de commandes spécifiques. La fonctionnalité "run" permet alors de lancer ces commandes ayant accès aux exécutables système mais également ceux installés localement (node_modules).

Exécutable système

"script" : {
	"print" : "echo 1"
}

> npm run print;

=> 1

Exécutable locale

"devDependencies" : {
	"rimraf" : "2.5.4"
},
"script" : {
	"clean" : "rimraf dist"
}

> npm run clean;

=> suppression du dossier dist

En supplément, il est également possible d'utiliser les alias définis.

"scripts": {
	"full-clean": "npm run clean && rimraf node_modules && rimraf typings && npm cache clean",
	"clean-install": "npm run clean && npm install",
	"clean-start": "npm run clean && npm start",
	"watch": "webpack --config config/webpack.js --watch --progress --profile",
	"build": "rimraf dist && webpack --config config/webpack.js --progress --profile",
	"server": "webpack-dev-server --config config/webpack.js --inline --progress --port 3000",
	"server-test": "webpack-dev-server --config config/webpack.js --inline --port 3000",
	"test": "karma start config/karma.conf.js",
	"start": "npm run server",
	"postinstall": "npm run webdriver-update && typings install"
}
Exemple de procédures de build avec Webpack

Voilà ! Plus besoin de maintenir ces processus dans les fichiers de configuration Grunt ou encore Gulp; intéressant sur des builds de faible ou moyenne complexité.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.