【问题标题】:`npm build` doesn't run the script named "build" in package.json`npm build` 不会运行 package.json 中名为“build”的脚本
【发布时间】: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 时,这对我来说很容易。

标签: javascript node.js build npm


【解决方案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”脚本,正如我所希望的那样.
        猜你喜欢
        • 1970-01-01
        • 2020-09-14
        • 2020-02-09
        • 2021-03-03
        • 2018-12-10
        • 2020-03-04
        • 2020-04-05
        • 1970-01-01
        • 2021-07-22
        相关资源
        最近更新 更多