npm install
和npm run build
之间有什么区别?
我在我的项目中注意到,有时npm在执行npm install
时开始失败,但是,在运行npm run build
时,它运行正常。
这两个目标install
和run build
的内部运作方式有何不同?
答案 0 :(得分:35)
npm install
将依赖项安装到node_modules/
目录中,用于您正在处理的节点项目。您可以在另一个node.js项目(模块)上调用install
,将其安装为项目的依赖项。
npm run build
是npm build
的别名,除非您指定" build"否则它不执行任何操作。在你的package.json文件中。它允许您在项目中使用之前为项目执行任何必要的构建/准备任务。
build
和link
命令调用 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 build
和npm run build
是由Churro编写的两个不同的事情npm build
,但是npm run build
会在package.json
内写自定义工作1}}
2)npm build
和npm 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 build
和npm build
,您将看到差异。有关命令的更多信息,我建议您遵循npm documentation。
干杯!!
答案 2 :(得分:15)
npm build
不再存在。您必须立即致电npm run build
。以下是更多信息。
npm install
:安装依赖项,然后从install
package.json
字段调用scripts
。
npm run build
:运行package.json
scripts
字段中的构建字段。
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 答案 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构建脚本或本机库。这就是链接和安装调用此脚本的原因。