npm install和npm run build有什么区别?

Bal*_*jiK 68 node.js npm npm-install

npm install和之间有什么区别npm run build

我在我的项目中注意到,有时npm在npm install执行时开始失败,但是,在运行时npm run build,它运行正常.

如何这两个目标的内部运作,即installrun build不同?

Chu*_*rro 45

npm installnode_modules/为您正在处理的节点项目安装依赖项到目录中.您可以调用install另一个node.js项目(模块),将其安装为项目的依赖项.

npm run build是别名npm build,除非您在package.json文件中指定"build",否则它不执行任何操作.它允许您在项目中使用之前为项目执行任何必要的构建/准备任务.

build根据构建文档调用linkinstall命令:

这是由npm link和npm install调用的管道命令.

  • 自从@MKP说'npm run build`和`npm build`****不同**之后,它们被低估了.如果你能证明他们确实是相同或正确你的答案,我会再次投票. (26认同)
  • 在参考了下面链接的正确答案后,我还认为`npm build`和`npm run build`不一样。恕我直言,也许@churro 的上述答案需要更正。如果我错了,请纠正我。/sf/ask/2095778821/?noredirect=1&lq=1 (3认同)

MKP*_*MKP 40

主要区别是::

npm install是一个npm cli-command,用于执行预定义的事情,即由Churro编写,用于安装package.json中指定的依赖项

npm run 命令名npm run-script 命令名(例如 npm run build)也是一个预定义的cli命令,用于运行自定义脚本,并使用指定的名称代替"command-name".因此,在这种情况下,npm run build是一个名为"build"的自定义脚本命令,它将执行其中指定的任何操作(例如,在下面的示例package.json中给出的echo'hello world').

需要注意的事项::

1)还有一两件事,npm build而且npm run build是两个不同的东西npm build会做书面的西班牙油条,但npm run build会做里面写的定制工作package.json

2)与npm buildnpm run build不一样的.我的意思是,你不能在自定义build(npm run build)脚本中指定一些东西,并期望npm build做同样的事情.请尝试以下事项进行验证package.json:

{
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build":"echo 'hello build'"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {},
  "dependencies": {}
}
Run Code Online (Sandbox Code Playgroud)

并且一个接一个地跑npm run build,npm build你会看到差异.有关命令的更多信息,我建议您遵循npm文档.

干杯!!

  • 如果你更详细地解释一下`npm run build`和`npm build`之间的区别,我会很感激,而不是"尝试运行这个".好吧,他们不一样,以什么方式?那么@ Churro的回答是不正确的呢? (11认同)
  • 是的,'npm build`确实仍然是个谜.很高兴知道这一点.据我所知,_"`npm build`将按照Churro的说法进行操作"_不是真的.Churro说它会在`package.json`中为`build`命令执行指定(在我假设的`scripts`部分中定义).但这就是`npm run build`的作用,而`npm build`不会运行`package.json``scripts`部分中指定的build命令.除非有一些其他的方法来定义`package.json`中应该做什么,这里没有解释,也没有在Churro中解释(在NPM文档中,我认为,遗憾的是). (6认同)
  • 所以我试了一下,`npm build`说了_npm WARN build`npm build`,没有参数。您是要使用“ npm run-script build”吗?_。我认为它什么也没做。花了一些时间在这里阅读所有答案并亲自尝试后,我仍然无法分辨`npm build`的目的是什么:(。 (2认同)

CTS*_*_AE 36

NPM于2019年

npm build不复存在.你npm run build现在必须打电话.更多信息如下.

TLDR;

npm install:安装依赖项,然后installpackage.json scripts字段中调用.

npm run build:从package.json scripts字段运行构建字段.


NPM脚本字段

https://docs.npmjs.com/misc/scripts

您可以在npm package.json脚本字段中添加许多内容.查看脚本生命周期以上的文档链接 - 大多数都有预挂钩和挂钩,您可以在安装,发布,卸载,测试,启动,停止,收缩包装,版本之前/之后运行脚本.


使事情复杂化

  • npm install 是不一样的 npm run install
  • npm install安装package.json依赖项,然后运行package.json scripts.install
    • (基本上npm run install在安装依赖项后调用.
  • npm run install只运行package.json scripts.install,它不会安装依赖项.
  • npm build曾经是一个有效的命令(以前是相同的npm run build),但它不再是; 它现在是一个内部命令.如果您运行它,您将获得:npm WARN build npm build called with no arguments. Did you mean to npm run-script build?您可以阅读更多文档:https://docs.npmjs.com/cli/build

  • +1但是说'npm build`不再存在令人困惑.它仍然存在于npm已知/特殊的意义上,因为它会对你在底部提到的警告作出反应.基本上它现在什么也没做.[对另一个问题的回答](/sf/ask/2095778821/)给出了关于`npm build` vs`npm run build`的最简短摘要. (4认同)

Cha*_*och 5

  • npm install 在 package.json 配置中安装依赖项。
  • npm run build 运行脚本“build”并创建一个运行您的应用程序的脚本 - 假设 server.js
  • npm start 运行“start”脚本,然后将是“node server.js”

很难确切地说出问题是什么,但基本上如果你查看你的脚本配置,我猜“构建”使用某种构建工具来创建你的应用程序,而“开始”假设构建已经完成但如果失败该文件不存在。

您可能正在使用 bower 或 grunt - 我似乎记得典型的 grunt 应用程序将定义这些脚本以及删除最后一个构建的“干净”脚本。

构建工具倾向于在启动脚本调用的 bin/、dist/ 或 build/ 文件夹中创建一个文件 - 例如“node build/server.js”。当您npm start失败时,可能是因为您调用npm clean或类似方法删除了最新版本,因此您的应用程序文件不存在导致 npm start 失败。

npm build 的源代码 - 涉及这个问题中的讨论 - 在 github 中,如果您愿意,可以查看。如果您npm build直接运行并且定义了“构建”脚本,它将退出并显示错误,要求您调用构建脚本,npm run-script build因为它与npm run script.

我不太确定是什么npm build,但它似乎与依赖项中的 postinstall 和打包脚本有关。我认为这可能是为了确保在下载包后为特定环境构建依赖项所需的任何 CLI 构建脚本或本机库。这就是链接和安装调用此脚本的原因。