J'ai quelques dépendances "globales" (jshint, csslint, buster, etc.) que j'aimerais avoir automatiquement installées et exécutables via la ligne de commande lorsque mon paquet est installé via npm install
. Est-ce possible?
Actuellement, je fais les choses suivantes manuellement:
npm install -g <package_name>
npm link <package_name>
Mise à jour: Je viens de trouver cette demande de fonctionnalité pour npm. Il semble que la configuration scripts
dans package.json soit la solution.
Mettre à jour à nouveau: Ou, après avoir lu le npm docs , je suis peut-être censé utiliser un fichier . Gyp ? Je suis confus.
Il n'est pas possible de spécifier des dépendances comme "globales" à partir d'un package.json
. Et, ceci est voulu par Isaac indique dans cette demande de fonctionnalité vous avez mentionné:
Oui, nous ne ferons jamais ça.
Toutefois, les "fichiers binaires" peuvent toujours être utilisés lorsqu'un package est installé localement. Ils seront dans .../node_modules/.bin/
. Et, vous devriez pouvoir les mettre en file d'attente avec un preinstall
script .
Cependant, si la série de commandes est assez longue (comme " jshint, csslint, buster, etc. " suggérerait), vous voudrez peut-être regarder en utilisant un outil de construction tel que grunt
pour effectuer les différentes tâches:
{
// ...,
"scripts": {
"preinstall": "grunt"
}
}
J'aime beaucoup le modèle dans lequel vous installez des dépendances locales, puis utilisez un script bash qui définit votre PATH sur ./node_modules/.bin
.
Fichier: env.sh
# Add your local node_modules bin to the path for this command
export PATH="./node_modules/.bin:$PATH"
# execute the rest of the command
exec "$@"
Ensuite, vous pouvez utiliser ce script avant toute commande bash. Si vous associez cela à un script Makefile ou npm:
Fichier: Makefile
lint :
./env.sh csslint my_styles
Fichier: package.json
"scripts": {
"lint": "./env.sh csslint my_styles"
}
Ces tâches dans ces fichiers ressemblent à celles qui référencent csslint dans un emplacement global, mais elles utilisent en fait la version de votre corbeille node_modules.
L'avantage vraiment impressionnant est que ces dépendances peuvent être versionnées facilement, tout comme vos autres modules de nœud. Si vous vous en tenez à une solution d'installation globale, vous pourriez utiliser une version spécifique du système de l'utilisateur requise pour l'un de ses autres projets.
Vous devriez essayer ceci: https://github.com/lastboy/package-script
Je l'utilise pour installer des packages npm globaux directement à partir de package.json. Cela fonctionne bien pour les clients qui ne sont pas techniquement alphabétisés.
Il vérifie même si les paquets sont déjà installés, sinon installez-les!