web-dev-qa-db-fra.com

`npm build` n'exécute pas le script nommé" build "dans package.json

Pour un nouveau module, j'essaie d'utiliser npm build sans gulp/Grunt/autres outils de construction spécialisés.

_"scripts": {
  "build": "node build.js"
},
_

Mon build.js est tout simplement

_console.log('Hello')
_

Cependant, en cours d'exécution

_npm build
_

Quitte simplement sans rien imprimer, avec le statut 0.

Fonctionnement:

_npm install
_

Fait également toutes les choses normales, mais n'exécute pas build.js non plus.

Comment puis-je faire en sorte que NPM exécute mon script de construction?

Edit: même les commandes bash simples ne semblent pas fonctionner, par exemple

_"scripts": {
    "build": "touch TESTFILE"
},
_

Ne crée pas de fichier avec ce nom.

123
mikemaccana

Malheureusement, _npm build_ est déjà une commande internal , comme décrit dans la documentation :

C'est la commande de plomberie appelée par npm link et npm install. Il ne devrait généralement pas être appelé directement.

Comme cette commande existe déjà, elle ombrage toujours votre _"build": "node build.js"_.

La manière entièrement qualifiée d’exécuter votre propre script consiste à utiliser run-script_ OU SON ALIAS run :

_$ npm run build
_

_npm start_ et les autres sont le moyen le plus simple, mais n’est une option que si une commande npm existante ne l’observe pas, comme le fait _npm build_.


Pour la postérité (comme d'autres l'ont déjà mentionné), _npm build_ est utilisé par npm pour générer des addons C/C++ natifs Node à l'aide de node-gyp . Ce n'est pas bien documenté car généralement cela se fait automatiquement, mais si vous êtes intéressé, le le code source est ici .

217
jayphelps

Le script nommé "build" dans package.json n'est en aucun cas spécial. Le seul moyen de le faire fonctionner est d'appeler:

npm run-script build

Certains noms sont appelés automatiquement par npm , mais "build" n'en fait pas partie. La liste complète est:

  • prepublish, publish, postpublish
  • preinstall, install, postinstall
  • preuninstall, uninstall, postuninstall
  • preversion, version, postversion
  • pretest, test, posttest
  • prestop, stop, poststop
  • prestart, start, poststart
  • prerestart, restart, postrestart
  • preCUSTOM et postCUSTOM pour les noms de script personnalisés.
17
Flimm

OK, pour exécuter une construction seule, utilisez:

npm run-script build
3
mikemaccana

J'ai eu un problème avec npm run build n'imprimant rien. fini par utiliser npm run build --verbose pour obtenir le résultat dont j'avais besoin.

3
Or Gal

Npm build attend

Un dossier contenant un fichier package.json à la racine

Essayez d’utiliser scripts npm dans votre package.json, comme le classique npm start

2
Kangcor