web-dev-qa-db-fra.com

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 commençait à échouer lorsque npm install était exécuté, mais que, lorsque npm run build était exécuté, cela fonctionnait parfaitement. 

Comment le fonctionnement interne de ces deux cibles, à savoir install et run build, diffère-t-il?

36
BalajiK

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

npm run build est un alias pour npm build et ne fait rien à moins que vous ne spécifiiez ce que "build" fait dans votre fichier package.json. Il vous permet d'effectuer toutes les tâches de construction/préparation nécessaires à votre projet, avant qu'il ne soit utilisé dans un autre projet.

build est appelé par les commandes link et install, selon la documentation de build :

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

27
Churro

La principale différence est ::

npm install est une commande npm cli qui effectue la tâche prédéfinie, telle que écrite par Churro, pour installer les dépendances spécifiées dans package.json

npm exécuter _ ​​nom de commande ou npm script d'exécution _ ​​nom de commande (ex. exécution de npm) est également une commande cli-commande prédéfinie pour exécuter vos scripts personnalisés avec le nom spécifié à la place de "nom-commande". Donc, dans ce cas, npm run build est un commande de script personnalisée avec le nom "build" et fera quoi que ce soit spécifié à l'intérieur de celui-ci (par exemple echo 'hello world' donné dans l'exemple ci-dessous, package.json).

Ponits à noter ::

1) Encore une chose, npm build et npm run build sont deux choses différentes que npm build fera comme écrit par Churro, mais npm run build fera un travail personnalisé écrit à l'intérieur de package.json

2) Et npm build et npm run build ne sont pas identiques. Ce que je veux dire, c'est que vous ne pouvez pas spécifier quelque chose dans le script de construction personnalisé (npm run build) et vous attendre à ce que npm build fasse de même. Essayez ce qui suit pour vérifier dans votre package.json:

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

et lancez npm run build et npm build un par un et vous verrez la différence. Pour plus d'informations sur les commandes, je vous recommande de suivre la documentation npm .

À votre santé!!

24
MKP

MNP en 2019

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

TLDR;

npm install: installe des dépendances, puis appelle la install à partir du champ package.jsonscripts.

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


Champ Scripts NPM

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

Il y a beaucoup de choses que vous pouvez mettre dans le champ des scripts npm package.json. Consultez le lien de la documentation ci-dessus plus au-dessus du cycle de vie des scripts - la plupart ont des points d'ancrage avant et après lesquels 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.


Pour compliquer les choses

  • npm install n'est pas la même chose que npm run install
  • npm install installe les dépendances package.json, puis exécute le package.jsonscripts.install
    • (Appelle essentiellement npm run install après l’installation des dépendances.
  • npm run install exécute uniquement le package.jsonscripts.install, il n'installe pas les dépendances.
  • npm build était une commande valide (était identique à 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
8
CTS_AE
  • npm install installe les dépendances dans votre configuration de 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 est le problème, mais si vous examinez 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é effectuée mais échoue ensuite. 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 "clean" 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émarrage appelle ensuite - par exemple. "noeud 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, de sorte que votre fichier d'application n'est pas présent, ce qui provoque l'échec du démarrage de npm.

le code source de npm build - pour aborder la discussion dans cette question - est dans github pour que vous puissiez l'examiner si vous le souhaitez. Si vous exécutez npm build directement et que vous avez défini un script "build", il se fermera avec une erreur vous demandant d'appeler votre script de compilation en tant que npm run-script build, de sorte que 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 fait, mais cela semble être lié aux scripts postinstall et d'empaquetage dans des dépendances. Je suppose que cela peut être de s'assurer que les scripts de construction de la CLI ou les bibliothèques natives requises par les dépendances sont générés pour l'environnement spécifique après le téléchargement du package. Ce sera pourquoi link et install appellent ce script.

1
Chanoch