`npm build`不会在package.json中运行名为“build”的脚本

时间:2015-04-29 09:33:23

标签: javascript node.js build npm

对于一个新模块,我试图使用npm build而没有gulp / Grunt /其他专门的构建工具。

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

我的build.js只是

console.log('Hello')

然而,正在运行

npm build

只需退出而不打印任何内容,状态为0.

运行:

npm install

也做所有正常的事情,但也不运行build.js。

如何让npm运行我的构建脚本?

编辑:即使是简单的bash命令似乎也不起作用,例如

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

不制作具有该名称的文件。

5 个答案:

答案 0 :(得分:213)

不幸的是,npm build已经是内部命令,如in the docs所述:

  

这是由npm link和npm install调用的管道命令。   通常不应直接调用。

由于该命令已存在,因此它始终会遮挡"build": "node build.js"

运行自己脚本的完全限定方式是使用run-script or its alias run

$ npm run build

npm start和其他人是简单的方法,但只有在现有的npm命令不影响它时才是一个选项,就像npm build那样。

对于后代(正如其他人所提到的),npm使用npm build来使用node-gyp构建本机C / C ++节点插件。它没有很好地记录,因为它通常会自动发生,但如果您对source code is here感兴趣。

答案 1 :(得分:15)

脚本命名为" build"在package.json中并不是特别的。让它运行的唯一方法是调用:

npm run-script build

There are some names which are called automatically by npm,但" build"不是其中之一。完整列表是:

  • prepublishpublishpostpublish
  • preinstallinstallpostinstall
  • preuninstalluninstallpostuninstall
  • preversionversionpostversion
  • pretesttestposttest
  • prestopstoppoststop
  • prestartstartpoststart
  • prerestartrestartpostrestart
  • preCUSTOMpostCUSTOM用于自定义脚本名称。

答案 2 :(得分:3)

好的,要运行它自己的构建,请使用:

npm run-script build

答案 3 :(得分:3)

我遇到问题,npm run build没有打印任何内容。最后使用npm run build --verbose来获得我需要的输出。

答案 4 :(得分:2)

Npm build期待

  

在其根目录中包含package.json文件的文件夹

尝试在package.json中使用npm scripts,就像经典的npm start

一样