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?
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.
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é!!
npm build
n'existe plus. Vous devez appeler npm run build
maintenant. Plus d'infos ci-dessous.
npm install
: installe des dépendances, puis appelle la install
à partir du champ package.json
scripts
.
npm run build
: exécute le champ de construction à partir du champ package.json
scripts
.
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.
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.json
scripts.install
npm run install
après l’installation des dépendances.npm run install
exécute uniquement le package.json
scripts.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/buildnpm 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.jsnpm 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.