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

时间:2017-04-27 17:19:39

标签: node.js npm npm-install

npm installnpm run build之间有什么区别?

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

这两个目标installrun build的内部运作方式有何不同?

4 个答案:

答案 0 :(得分:35)

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

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

根据{{​​3}},buildlink命令调用

install

  

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

答案 1 :(得分:26)

  

主要区别是::

     

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

     

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

注意事项::

1)还有一件事,npm buildnpm run build是由Churro编写的两个不同的事情npm build,但是npm run build会在package.json内写自定义工作1}}

2)npm buildnpm run 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": {}
}

然后逐个运行npm run buildnpm build,您将看到差异。有关命令的更多信息,我建议您遵循npm documentation

干杯!!

答案 2 :(得分:15)

2019年NPM

npm build不再存在。您必须立即致电npm run build。以下是更多信息。

TLDR;

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

npm run build :运行package.json scripts字段中的构建字段。


NPM脚本字段

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

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


使事情复杂化

  • npm installnpm 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

答案 3 :(得分:1)

  • npm install在您的package.json配置中安装dependdendencies。
  • npm run build运行脚本" build"并创建了一个运行您的应用程序的脚本 - 让我们说服务器.js
  • npm start运行" start"脚本然后将是"节点server.js"

很难确切地知道问题是什么,但基本上如果你看一下你的脚本配置,我会猜测" build"使用某种构建工具来创建您的应用程序,同时启动"假设构建已完成但如果文件不存在则失败。

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

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

npm build的源代码 - 触及这个问题的讨论 - 在github中,你可以看看你是否喜欢。如果你直接运行npm build并且你有#34; build"脚本已定义,它将退出并显示错误,要求您将构建脚本称为npm run-script build,因此它与npm run script不同。

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