Node.js Paris, 20 Novembre 2014
Project
├── dependencies
├── devDependencies
├── peerDependencies
├── optionalDependencies
└── bundledDependencies
- Modules dont votre application a besoin pour fonctionner
- Sont déployés en production avec votre application
{
"dependencies": {
"json-string": "^5.0.0",
"mime-types": "^1.0.1",
"node-uuid": "^1.4.0"
}
}
- Modules requis pour le développement sur votre application:
- Task runner
- Tests
- Outils de debuggage
- N'est pas déployé en production
{
"devDependencies": {
"eslint": "^0.9.2",
"mocha": "2.0.1"
}
}
- Dépendances non essentielles pour l'application
- Peuvent être absentes de différentes plateformes (ex: windows)
- Chargement et utilisation à conditionner dans l'application
{
"optionalDependencies": {
"dtrace-provider": "^0.3.1"
}
}
- Equivalent à dependencies sauf que...
- Ces dépendances sont installées au même niveau que le module les requérants
Ce qui entraine des problèmes...
grulp-sass
{
"peerDependencies": {
"grulp": "~1.0.0"
}
}
grulp-jshint
{
"peerDependencies": {
"grulp": "^1.0.0"
}
}
- Peut entrainer des conflits de dépendances, ce dont était exempt npm grâce à son dependency tree
- Est en court de dépréciation #6565
- Spécifie les dépendances à packager avec votre module
- Utilisé lors du packaging, donc seulement utile si vous publiez vos modules sur un registre (npm ou registre interne)
- Peut servir à:
- Utiliser une version modifiée d'une dépendance (c'est mal !)
- Accélérer le déploiement de vos applications
{
"dependencies": {
"json-string": "^5.0.0",
"mime-types": "^1.0.1",
"node-uuid": "^1.4.0"
},
"bundledDependencies": [
"json-string"
]
}
X.Y.Z
│ │ └── Patch: Bugfix
│ │
│ └──── Minor: New feature
│
└────── Major: Breaking change
The spec: semver.org
A comprehensive guide: semver-ftw.org
"grulp": "*" // latest
"grulp": ">=2" // at least 2.0.0
"grulp": "^2.0.0" // at least 2.0.0 and below 3.0.0
"grulp": "~2.0.0" // at least 2.0.0 and below 2.1.0
"grulp": "2.0.0" // only the 2.0.0
npm shrinkwrap
- Vérouille l'arbre des dépendances complet.
- Moyen le plus sûr pour toujours avoir les mêmes dépendances d'une installation à l'autre
- npm outdated
- next-update: https://github.com/bahmutov/next-update
- gemnasium.com / david-dm.org
Sinopia: private/caching npm repository server
https://github.com/rlidwka/sinopia
- Gérer ses modules internes aussi facilement que les modules tiers
- Mise en cache local des modules publics
- Installations plus rapides
- Evite d'être bloqué si le registre npm est down
Merci
Des questions ?