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.
OK, to run a build on it's own, use:
Unfortunately
npm build
is already an internal command, as described in the docs: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 aliasrun
:npm start
and others are the short-hand way, but is only an option when an existing npm command doesn't shadow it, likenpm build
does.For posterity (as others have mentioned)
npm build
is used by npm to build native C/C++ Node addons using node-gyp. It's not documented well because usually it happens automatically, but if you're interested the source code is here.Npm build expects
Try using npm scripts in your package.json, like the classic npm start
I had a problem with
npm run build
not printing anything. ended up usingnpm run build --verbose
to get the output I needed.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: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
andpostCUSTOM
for custom script names.