`npm build` 不会运行 package.json 中名为“build”的脚本
Posted
技术标签:
【中文标题】`npm build` 不会运行 package.json 中名为“build”的脚本【英文标题】:`npm build` doesn't run the script named "build" in package.json 【发布时间】:2015-07-08 12:01:03 【问题描述】:对于一个新模块,我正在尝试使用 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"
,
不创建具有该名称的文件。
【问题讨论】:
解决方法:改用install
。
这基本上是 NPM 的一个巨大且不直观的烦恼,也是我继续使用 Yarn 的原因之一。使用 yarn,我可以运行任何自定义脚本作为参数,即 yarn storybook 将运行 storybook 脚本。在 NPM 中,我必须执行 npm run storybook,除此之外,如果我想通过 npm 传递任何参数,它需要 -- 在它之前,所以在比较 yarn storybook --ci 和 npm run storybook -- --ci 时,这对我来说很容易。
【参考方案1】:
不幸的是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++ Node 插件。
【讨论】:
某些包需要构建过程。当您运行npm install
并且 npm 找到具有 C/C++ 绑定或通常需要 node-gyp 运行的包时,它会启动 npm build
。您只需单独运行 npm build
即可重建这些软件包。
内部命令应重命名为_build
和npm build
应该是npm start
和npm test
之类的快捷方式
我知道npm build
不会调用我的脚本,它用于构建包的编译组件。我仍然不确定它是如何做到这一点的:它会寻找什么文件,等等?
这当然是有道理的,直到您查看文档参考并看到“开始”也被列出。然而,如果我从 package.json 中取出我的“启动”脚本,它不知道该怎么做。
如果我自己写一个包,还是很高兴知道,怎么做才能给npm build
填上意义……【参考方案2】:
package.json
中名为“build”的脚本在任何方面都不是特别的。让它运行的唯一方法是调用:
npm run-script build
There are some names which are called automatically by npm,但“构建”不是其中之一。完整列表是:
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
和 postCUSTOM
用于自定义脚本名称。
【讨论】:
【参考方案3】:我遇到了npm run build
不打印任何内容的问题。最终使用npm run build --verbose
来获得我需要的输出。
【讨论】:
【参考方案4】:好的,要自己运行构建,请使用:
npm run-script build
【讨论】:
【参考方案5】:Npm build 期待
根目录下包含 package.json 文件的文件夹
尝试在你的 package.json 中使用 npm scripts,就像经典的 npm start 一样
【讨论】:
这意味着npm build .
应该可以工作,并且在我的情况下,npm 确实在我的“package.json”中执行了“build”脚本,正如我所希望的那样.以上是关于`npm build` 不会运行 package.json 中名为“build”的脚本的主要内容,如果未能解决你的问题,请参考以下文章
更新 CSS 文件时如何让 npm run script 运行 build:style 脚本?
`npm 错误!运行 `npm ci && npm run build` 时出现 SyntaxError 后的代码 1`
text 开发人员日记:第1天 - 使用npm_package的packages / server / BUILD.bazel