Quelle est la différence entre npm install
et npm run build
?
J'ai remarqué dans mon projet que parfois npm commence à échouer lorsqu'il npm install
est exécuté, mais, lors de l'exécution npm run build
, cela fonctionne très bien.
En quoi le fonctionnement interne de ces deux cibles est-il install
et run build
diffère-t-il?
node.js
npm
npm-install
BalajiK
la source
la source
Réponses:
npm install
installe les dépendances dans lenode_modules/
répertoire, pour le projet de nœud sur lequel vous travaillez. Vous pouvez faire appelinstall
à un autre projet node.js (module), pour l'installer en tant que dépendance de votre projet.npm run build
est un alias pournpm build
, et il ne fait rien sauf si vous spécifiez ce que fait "build" dans votre fichier package.json. Il vous permet d'effectuer toutes les tâches de construction / préparation nécessaires pour votre projet, avant qu'il ne soit utilisé dans un autre projet.build
est appelé par les commandeslink
etinstall
, selon la documentation de build :la source
npm run build
et nenpm build
sont pas les mêmes. Je voterai à nouveau si vous pouvez prouver qu'ils sont effectivement identiques ou corriger votre réponse.npm build
etnpm run build
ne sont pas les mêmes. IMHO, Peut-être que la réponse ci-dessus de @churro doit être corrigée. S'il vous plait corrigez moi si je me trompe. stackoverflow.com/questions/29939697/…NPM en 2019
npm build
n'existe plus. Vous devez appelernpm run build
maintenant. Plus d'infos ci-dessous.TLDR;
npm install
: installe les dépendances, puis appelle leinstall
depuis lepackage.json
scripts
champ.npm run build
: exécute le champ de construction à partir dupackage.json
scripts
champ.Champ Scripts NPM
https://docs.npmjs.com/misc/scripts
Il y a beaucoup de choses que vous pouvez mettre dans le
package.json
champ des scripts npm . Consultez le lien de documentation ci-dessus plus au-dessus du cycle de vie des scripts - la plupart ont des hooks pré et post que vous pouvez exécuter des scripts avant / après l'installation, la publication, la désinstallation, le test, le démarrage, l'arrêt, la réduction, la version.Pour compliquer les choses
npm install
n'est pas la même chose quenpm run install
npm install
installe lespackage.json
dépendances, puis exécute lepackage.json
scripts.install
npm run install
après l'installation des dépendances.npm run install
exécute uniquement lepackage.json
scripts.install
, il n'installera pas les dépendances .npm build
C'était une commande valide (autrefois la même chose quenpm run build
) mais ce n'est plus le cas; c'est maintenant une commande interne. Si vous l'exécutez, vous obtiendrez:npm WARN build npm build called with no arguments. Did you mean to npm run-script build?
Vous pouvez en savoir plus sur la documentation: https://docs.npmjs.com/cli/buildla source
npm build
qu'il n'existe plus. Il existe toujours dans le sens où il est connu / spécial pour npm, car il réagit avec l'avertissement que vous mentionnez en bas. Essentiellement, il ne fait rien maintenant. Cette réponse à une autre question a donné le résumé le plus court surnpm build
vsnpm run build
.Ponits à noter:
1) Encore une chose,
npm build
etnpm run build
deux choses différentesnpm build
feront comme écrit par Churro, maisnpm run build
feront un travail personnalisé écrit à l'intérieurpackage.json
2) Et
npm build
etnpm run build
ne sont pas les mêmes. Ce que je veux dire, c'est que vous ne pouvez pas spécifier quelque chose dans lenpm run build
script build ( ) personnalisé et vous attendrenpm build
à faire de même. Essayez la chose suivante à vérifier dans votrepackage.json
:et courir
npm run build
etnpm build
un par un et vous verrez la différence. Pour plus d'informations sur les commandes, veuillez suivre la documentation de npm .À votre santé!!
la source
npm run build
etnpm build
. Ok donc ils ne sont pas pareils, de quelle manière? La réponse de @ Churro est donc incorrecte?npm build
fait reste un mystère. Ce serait bien de le savoir. Pour autant que je sache, "npm build
fera comme écrit par Churro" n'est pas vrai. Churro a dit qu'il ferait ce qui est spécifié danspackage.json
labuild
commande (comme défini dans lascripts
section je suppose). Mais c'est ce quinpm run build
fait etnpm build
n'exécute pas la commande de construction spécifiée dans lapackage.json
scripts
section. À moins qu'il n'y ait une autre façon de définir ce qu'ilnpm build
faut faire dans lepackage.json
, qui n'est pas expliqué ici, ni par Churro (ni dans la documentation NPM, je pense, malheureusement).npm build
dit que le build npm WARN étaitnpm build
appelé sans argument. Voulez-vous direnpm run-script build
? . Je pense que ça n'a rien fait. Après avoir passé du temps à lire toutes les réponses ici et à essayer cela moi-même, je ne peux toujours pas dire quel est le but denpm build
:(.npm install
installe les dépendances dans votre configuration package.json.npm run build
exécute le script "build" et créé un script qui exécute votre application - disons server.jsnpm start
exécute le script "start" qui sera alors "node server.js"Il est difficile de dire exactement quel était le problème, mais fondamentalement, si vous regardez la configuration de vos scripts, je suppose que "build" utilise une sorte d'outil de build pour créer votre application tandis que "start" suppose que la build a été faite mais échoue si le fichier n'est pas là.
Vous utilisez probablement bower ou grunt - il me semble que je me souviens qu'une application grunt typique aura défini ces scripts ainsi qu'un script "propre" pour supprimer la dernière version.
Les outils de construction ont tendance à créer un fichier dans un dossier bin /, dist / ou build / que le script de démarrage appelle ensuite - par exemple "node build / server.js". Lorsque votre
npm start
échoue, c'est probablement parce que vous avez appelénpm clean
ou similaire pour supprimer la dernière version afin que votre fichier d'application ne soit pas présent, ce qui entraîne l'échec de npm.Le code source de npm build - pour aborder la discussion dans cette question - est dans github pour que vous puissiez le voir si vous le souhaitez. Si vous exécutez
npm build
directement et que vous avez défini un script "build", il se terminera avec une erreur vous demandant d'appeler votre script de build commenpm run-script build
si ce n'était pas la même chose quenpm run script
.Je ne suis pas tout à fait sûr de ce que
npm build
fait, mais cela semble être lié aux scripts de post-installation et d'empaquetage dans les dépendances. Je suppose que cela peut garantir que tous les scripts de construction CLI ou bibliothèques natives requis par les dépendances sont construits pour l'environnement spécifique après le téléchargement du package. C'est pourquoi link et install appellent ce script.la source