J'aime Bundler , c'est excellent pour la gestion des dépendances. J'aime npm , installer des paquets de noeuds est facile! J'ai une application nodejs et j'aimerais pouvoir pouvoir spécifier les dépendances de mes applications et les installer/les mettre à jour facilement partout où je déploie mon application. Ce n'est pas une bibliothèque que je publie, c'est une application web à part entière.
Je suis au courant du npm bundle
_ commande, mais cela semble simplement remplacer le répertoire dans lequel les packages sont installés.
Je suis habitué à utiliser bundler de cette façon:
# Gemfile
gem "Rails", "3.0.3"
Installe Rails v3.0.3 et tout autre gem requis sur la machine hôte uniquement s'il n'existe pas déjà
> bundle install
Comment puis-je obtenir quelque chose de similaire avec npm?
À partir de npm 1.0 (ce qui est maintenant ce que vous obtenez par défaut si vous suivez les étapes du fichier README)], "bundle" n'est plus une chose séparée - c'est simplement "comment ça marche" ".
Alors:
package.json
À la racine de votre projetListez vos deps dans ce fichier
{ "name" : "my-project"
, "version" : "1.0.0"
, "dependencies" : { "express" : "1.0.0" } }
npm install
Puisque vous appelez ceci sans argument et non en mode global, il ne vous reste plus qu'à installer tous vos dépôts localement.
require("express")
et soyez heureux.C'était assez difficile à comprendre, mais NPM rend cela possible .
deps/
)package.json
fichier dans le répertoire ci-dessus qui répertorie les dépendancesindex.js
fichier dans le répertoire ci-dessus qui nécessite vos dépendancesImaginez que express est votre seule dépendance
note: Incrémenter la version chaque fois que vous modifiez les dépendances
{
"name": "myapp_dependencies",
"version": "0.0.1",
"engines": {
"node": "0.4.1"
},
"dependencies":{
"express": "2.0.0beta2"
}
}
export.modules = {
express: require('express')
//add more
}
Vous devriez maintenant pouvoir installer vos dépendances à l’aide de npm. Vous pourriez même faire de cette partie de votre processus de déploiement
cd deps
npm install
Ensuite, dans le code de votre application, vous pouvez accéder à votre version spécifique d’express comme ceci:
var express = require('myapp_dependencies').express;
Vous devriez lire ces deux articles du blog Isaacs (author npm). Je pense qu'ils sont vraiment bons, et je crois vous dire comment atteindre votre objectif:
Je crois que le lien n ° 1 (point n ° 11) explique ceci:
11: regroupez toutes vos dépendances dans le paquet lui-même
Lorsque vous utilisez la commande npm bundle, npm place toutes vos dépendances dans le dossier node_modules de votre package. Mais cela ne s’arrête pas là.
Si vous voulez dépendre de quelque chose qui ne figure pas dans le registre, vous pouvez le faire. Faites juste ceci:
npm bundle install http://github.com/whoever/w Whatever/tarball/master Ceci installera le contenu de cette archive dans le bundle, et vous pourrez ensuite le lister comme dépendance, et le gagnant N'essayez pas de l'installer quand votre paquet est installé.
Ceci est également pratique si vous avez votre propre fourchette de quelque chose et préférez ne pas changer le nom.
En fait, vous pouvez exécuter presque toutes les commandes npm sur le bundle. Pour voir ce qu’il contient, vous pouvez faire npm bundle ls. Pour supprimer quelque chose, npm bundle rm thing. Et, bien sûr, vous pouvez installer plusieurs versions et activer celle de votre choix.
Il me semble que la solution la plus simple consiste à utiliser un package.json
fichier avec le drapeau private
(ajouté à npm le mois dernier) défini sur true
. De cette façon, vous pouvez exécuter npm install
ou npm bundle
saisir les dépendances de votre projet, mais vous empêchez toute personne de publier accidentellement votre projet non public.
Voici un exemple package.json
:
{
"name": "yourProject"
,"version": "1.0.0"
,"dependencies": { "express" : ">=2.1.0" }
,"private": true
}
Fonctionnement npm install
installera express
sur le système local s’il n’existe pas déjà; fonctionnement npm publish
donne une erreur à cause du "private": true
.
Vous et votre équipe pouvez utiliser la balise de version en interne pour suivre les changements de dépendance au fil du temps - chaque fois que vous modifiez une dépendance, modifiez la version. Pour voir quelle version vous avez installée, utilisez npm ls installed
.
A partir de la version 1.1.2 de Npm, une nouvelle commande npm shrinkwrap
crée un fichier npm-shrinkwrapped.json
, Analogue à Gemfile.lock
. Il est important d'en créer un pour éviter la pourriture des logiciels (voir justification de Bundler ). D'autant que Nodejs a une communauté qui bouge très vite.
Alors que bundle install
Crée automatiquement un Gemfile.lock
, npm install
Ne créera pas npm-shrinkwrapped.json
(Mais l'utilisera s'il existe). Par conséquent, vous devez vous rappeler d'utiliser npm shrinkwrap
.
Lisez le guide complet sur http://blog.nodejs.org/2012/02/27/managing-node-js-dependencies-with-shrinkwrap/
Publiez également votre application avec npm
et répertoriez ses dépendances dans votre fichier package.json.
Quand quelqu'un utilise npm
pour installer votre paquet, npm
se chargera de résoudre ses dépendances.
Spéc. De paquets: http://wiki.commonjs.org/wiki/Packages/1.