`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 即可重建这些软件包。 内部命令应重命名为_buildnpm build 应该是npm startnpm 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 preCUSTOMpostCUSTOM 用于自定义脚本名称。

【讨论】:

【参考方案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”的脚本的主要内容,如果未能解决你的问题,请参考以下文章

npm package.json 操作系统特定脚本

“npm run build”不是在添加纱线之前运行吗?

更新 CSS 文件时如何让 npm run script 运行 build:style 脚本?

`npm 错误!运行 `npm ci && npm run build` 时出现 SyntaxError 后的代码 1`

text 开发人员日记:第1天 - 使用npm_package的packages / server / BUILD.bazel

Building fresh packages卡很久