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

对于一个新的模块,我正尝试使用npm build而不使用npm build / Grunt /其他专门的构build工具。

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

我的build.js很简单

 console.log('Hello') 

但是,运行

 npm build 

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

运行:

 npm install 

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

我怎样才能让npm运行我的构build脚本?

编辑:甚至简单的bash命令似乎不起作用,例如

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

不要用这个名字制作一个文件。

不幸的是, npm build已经是一个内部命令,正如文档中所描述的那样 :

这是由npm link和npm install调用的pipe道命令。 一般不应该直接调用。

因为这个命令已经存在了,所以它总是会影响你的"build": "node build.js"

运行自己的脚本的完全合格的方式是run-script或其别名run

 $ npm run build 

npm start和其他的对于完全合格的run-script是简短的,但是只有当一个现有的npm命令不会影响它时才是一个选项,就像npm build一样。 基本上,如果没有find内置的npm命令,它将尝试从你的"scripts" package.json属性中find并使用任何匹配的命令。


对于后人(正如其他人所提到的), npm build被npm用来使用node-gyp构build本地C / C ++节点插件。 它没有被很好的logging,因为它通常会自动发生,但如果你感兴趣的源代码在这里 。

package.json名为“build”的脚本在任何方面都不是特殊的。 让它运行的唯一方法是调用:

 npm run-script build 

有些名字是由npm自动调用的 ,但是“build”不是其中之一。 完整列表是:

  • prepublish publishpublishpostpublish
  • preinstallinstallpostinstall
  • preuninstalluninstallpostuninstall
  • preversionversionpostversion
  • pretesttestposttest
  • prestopstop ,后poststop
  • poststartstartpoststart
  • prerestartrestartpostrestart
  • preCUSTOMpostCUSTOM用于自定义脚本名称。

我有一个npm run build不打印任何问题。 结束了使用npm run build --verbose得到我需要的输出。

Npm构build期望

包含根文件夹中的package.json文件的文件夹

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

好,运行一个自己的构build,使用:

 npm run-script build