Quelle est la différence entre npm install
et npm run build
?
J'ai remarqué dans mon projet que parfois npm échoue lorsque npm install
est exécuté, mais, en exécutant npm run build
, il fonctionne très bien.
En quoi le fonctionnement interne de ces deux cibles, à savoir install
et run build
, diffère-t-il ?
npm install
installe les dépendances dans le répertoire node_modules/
, pour le projet node sur lequel vous travaillez. Vous pouvez appeler install
sur un autre projet node.js (module), pour l'installer comme une dépendance pour votre projet.
npm run build
est un alias pour npm build
, et il 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.
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.
La principale différence est la suivante ::
npm install est une commande npm cli qui fait la chose prédéfinie, c'est-à-dire, comme écrit par Churro, installer les dépendances spécifiées à l'intérieur de package.json
npm run nom-de-la-commande ou npm run-script nom-de-la-commande ( *ex.* npm run build ) est également une commande client prédéfinie pour exécuter vos scripts personnalisés avec le nom spécifié à la place de "nom-de-la-commande" ;. Ainsi, dans ce cas, npm run build est une commande de script personnalisé avec le nom "build" ; et fera tout ce qui est spécifié à l'intérieur (par ex. spécifié à l'intérieur (par exemple **echo 'hello world' donné dans l'exemple ci-dessous package.json).
Ponits à noter::
Une dernière chose, npm build
et npm run build
sont deux choses différentes : npm build
fera ce qui est écrit par Churro, mais npm run build
fera le travail personnalisé écrit dans package.json
.
Et npm build
et npm 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 le script de construction personnalisé (npm run build
) et attendre de npm build
qu'il fasse la même chose. Essayez de vérifier la chose suivante 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, veuillez suivre la [documentation npm][1].
A la vôtre !
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.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 si vous regardez la configuration de vos scripts, je suppose que le script "build" ; utilise une sorte d'outil de construction pour créer votre application, tandis que le script "start" ; suppose que la construction a été effectuée, mais échoue si le fichier n'est pas présent.
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 "node build/server.js" ;. Lorsque votre npm start
échoue, c'est probablement parce que vous avez appelé npm clean
ou similaire pour supprimer le dernier build et que votre fichier d'application n'est pas présent, ce qui fait échouer le start npm.
Le code source de npm build est disponible sur github pour que vous puissiez y jeter un œil si vous le souhaitez. Si vous exécutez directement npm build
et que vous avez un script "build" ; défini, il se terminera avec une erreur vous demandant d'appeler votre script de construction en tant que npm run-script build
donc ce n'est pas la même chose que npm run script
.
Je ne sais pas exactement ce que fait npm build
, mais il semble que cela soit lié à la post-installation et à l'empaquetage des scripts dans les dépendances. Je suppose qu'il s'agit 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. C'est pour cela que link et install appellent ce script.