169 votes

Quelle est la différence entre npm install et npm run build ?

Quelle est la différence entre npm install et npm run build ?

J'ai remarqué dans mon projet que parfois npm échoue quand npm install est effectuée, mais, lors de l'exécution de npm run build cela fonctionne très bien.

Comment fonctionne le fonctionnement interne de ces deux cibles, à savoir install et run build différer ?

2 votes

La réponse acceptée à ce jour est discutable. Je pense que les réponses de MKP et CTS_AE, sont plus pertinentes à ce moment précis. Avec tout le respect que je vous dois, cette question devrait être portée à l'attention du modérateur et/ou de celui qui l'a posée.

116voto

CTS_AE Points 1927

NPM en 2019

npm build n'existe plus. Vous devez appeler npm run build maintenant. Plus d'informations ci-dessous.

TLDR ;

npm install : installe les dépendances, puis appelle la install de la package.json scripts champ.

npm run build : exécute le champ de construction à partir du package.json scripts champ.


Champ de scripts NPM

https://docs.npmjs.com/misc/scripts

Il y a beaucoup de choses que vous pouvez mettre dans le npm package.json champ de scripts. Consultez le lien de la documentation ci-dessus pour en savoir plus sur le cycle de vie des scripts - la plupart ont des crochets pré et post qui vous permettent d'exécuter les scripts avant/après l'installation, la publication, la désinstallation, le test, le démarrage, l'arrêt, le shrinkwrap, la version.


Pour compliquer les choses

  • npm install n'est pas la même chose que npm run install
  • npm install installe package.json puis exécute le package.json scripts.install
    • (Il s'agit essentiellement d'appeler npm run install après l'installation des dépendances.
  • npm run install n'exécute que le package.json scripts.install il n'installera pas les dépendances .
  • npm build était une commande valide (identique à la commande npm 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/build

Notes supplémentaires

Il existe encore deux commandes de premier niveau qui permettent d'exécuter des scripts :

  • npm start qui est identique à npm run start
  • npm test ==> npm run test

7 votes

+1 Mais c'est confus de dire npm build 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 sur npm build vs npm run build .

0 votes

Je viens d'essayer d'utiliser yarn sur un projet récent promu par nul autre que les gens de Salesforce yarn n'a pas fonctionné. Mais NPM a fonctionné à merveille

113voto

Churro Points 1258

npm install installe les dépendances dans le node_modules/ pour le projet node sur lequel vous travaillez. Vous pouvez appeler install sur un autre projet node.js (module), pour l'installer en tant que dépendance de votre projet.

npm run build ne fait rien à moins que vous ne spécifiez ce que "build" fait 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.

npm build est une commande interne et est appelée par link et install commandes, selon la documentation pour la construction :

C'est la commande de plomberie appelée par npm link et npm install.

Vous n'appellerez pas npm build normalement car il est utilisé en interne pour construire des addons Node natifs C/C++ en utilisant node-gyp.

1 votes

Après avoir consulté la réponse correcte du lien ci-dessous, je pense également que npm build et npm run build ne sont pas les mêmes. IMHO, Peut-être la réponse ci-dessus de @churro doit être corrigée. Veuillez me corriger si je me trompe. stackoverflow.com/questions/29939697/

51voto

MKP Points 435

La principale différence est la suivante : :

npm install est une commande client npm qui fait la chose prédéfinie, c'est-à-dire, comme écrit par Churro, installer les dépendances spécifiées dans le fichier package.json

npm run nom de la commande ou npm run-script nom de la commande ( ex. npm run build ) est également une cli-commande prédéfinie pour exécuter vos scripts personnalisés avec le nom spécifié à la place de "command-name". Ainsi, dans ce cas npm run build est une commande script personnalisée portant le nom "build" et fera tout ce qui est ce qui est spécifié à l'intérieur (par exemple echo 'hello world' (Bonjour monde) donné dans l'exemple ci-dessous package.json).

Ponits à noter: :

  1. Une dernière chose, npm build et npm run build sont deux choses différentes, npm run build fera travail personnalisé écrit à l'intérieur package.json et npm build est un prédéfini script (non disponible pour une utilisation directe)

  2. Vous ne pouvez pas spécifier quelque chose à l'intérieur de la construction personnalisée script ( npm run build ) script et attendent npm build pour faire de même. Essayez de vérifier les points suivants dans votre package.json :

    { "nom" : "demo", "version" : "1.0.0", "description" : "", "main" : "index.js", "scripts" : { "build" : "echo 'hello build'" }, "keywords" : [], "author" : "", "licence" : "ISC", "devDependencies" : {}, "dependencies" : {} }

et exécuter npm run build et npm build un par un et vous verrez la différence. Pour en savoir plus sur les commandes, veuillez suivre documentation npm .

Santé !

11 votes

Plutôt que de dire "essayez d'exécuter ceci", j'apprécierais que vous expliquiez de manière plus détaillée quelle est la différence entre npm run build et npm build . Ok, donc ils ne sont pas identiques, dans quel sens ? La réponse de @Churro est donc incorrecte ?

7 votes

Oui, quoi ? npm build reste un mystère. Ce serait bien de le savoir. Pour autant que je puisse dire, " npm build fera comme écrit par Churro" n'est pas vrai. Churro a dit qu'il ferait ce qui est spécifié dans package.json pour le build (tel que défini dans le scripts section je suppose). Mais c'est ce que npm run build fait, et npm build n'exécute pas la commande de construction spécifiée dans package.json scripts section. A moins qu'il n'y ait un autre moyen de définir ce que npm build devrait faire dans le package.json ce qui n'est pas expliqué ici, ni par Churro (ni dans les docs de NPM, je pense, malheureusement).

2 votes

Alors j'ai essayé et npm build a déclaré npm WARN build npm build appelé sans arguments. Voulez-vous dire npm run-script build ? . Je pense que ça n'a rien fait. Après avoir passé du temps à lire toutes les réponses ici et avoir essayé moi-même, je ne peux toujours pas dire quel est le but de l'opération. npm build :(.

5voto

Chanoch Points 89
  • npm install installe les dépendances dans votre configuration package.json.
  • npm run build exécute le script "build" et crée un script qui exécute votre application - disons server.js
  • npm start exécute le script "start" qui sera alors "node server.js".

Il est difficile de dire exactement quel était le problème, mais si vous regardez la configuration de vos scripts, je suppose que "build" utilise une sorte d'outil de construction pour créer votre application, tandis que "start" suppose que la construction a été faite, mais échoue si le fichier n'est pas là.

Vous utilisez probablement bower ou grunt - je crois me souvenir qu'une application grunt typique aura défini ces scripts ainsi qu'un script "propre" pour supprimer la dernière construction.

Les outils de construction ont tendance à créer un fichier dans un dossier bin/, dist/, ou build/ que le script de départ 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 le fichier de l'application ne soit pas présent et que le démarrage de npm échoue.

Le code source de npm build - pour aborder la discussion dans cette question - est dans github pour que vous puissiez y jeter un œil si vous le souhaitez. Si vous exécutez npm build directement et que vous avez un script "build" défini, il sortira avec une erreur vous demandant d'appeler votre script "build" en tant que npm run-script build donc ce n'est pas la même chose que npm run script .

Je ne suis pas tout à fait sûr de ce que npm build mais il semble que ce problème soit lié aux scripts de post-installation et d'empaquetage dans les dépendances. Je suppose que cela pourrait être de s'assurer que tous les scripts de construction CLI ou les bibliothèques natives requises par les dépendances sont construits pour l'environnement spécifique après le téléchargement du paquet. Ce sera pourquoi link et install appellent ce script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X