`npm build` doesn't run the script named "build" in package.json

Javascriptnode.jsBuildNpm

Javascript Problem Overview


For a new module I'm trying to use npm build without gulp / Grunt / other specialised build tools.

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

My build.js is simply

console.log('Hello')

However, running

npm build

Simply exits without printing anything, with a status of 0.

Running:

npm install

Also does all the normal things, but does not run build.js either.

How can I make npm run my build script?

Edit: even simple bash commands don't seem to work, eg

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

Doesn't make a file with that name.

Javascript Solutions


Solution 1 - Javascript

Unfortunately npm build is already an internal command, as described in the docs:

> This is the plumbing command called by npm link and npm install. > It should generally not be called directly.

Because that command already exists, it always shadows over your "build": "node build.js".

The fully-qualified way to run your own script is with run-script or its alias run:

$ npm run build

npm start and others are the short-hand way, but is only an option when an existing npm command doesn't shadow it, like npm build does.


For posterity (as others have mentioned) npm build is used by npm to build native C/C++ Node addons using node-gyp.

Solution 2 - Javascript

The script named as "build" in package.json is not special in any way. The only way to get it to run is to call:

npm run-script build

There are some names which are called automatically by npm, but "build" is not one of them. The full list is:

  • 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 and postCUSTOM for custom script names.

Solution 3 - Javascript

OK, to run a build on it's own, use:

npm run-script build

Solution 4 - Javascript

Npm build expects

> A folder containing a package.json file in its root

Try using npm scripts in your package.json, like the classic npm start

Solution 5 - Javascript

I had a problem with npm run build not printing anything. ended up using npm run build --verbose to get the output I needed.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmikemaccanaView Question on Stackoverflow
Solution 1 - JavascriptjayphelpsView Answer on Stackoverflow
Solution 2 - JavascriptFlimmView Answer on Stackoverflow
Solution 3 - JavascriptmikemaccanaView Answer on Stackoverflow
Solution 4 - JavascriptKangcorView Answer on Stackoverflow
Solution 5 - JavascriptOr GalView Answer on Stackoverflow