npm install "和 "npm run build "之间有什么区别?
我注意到在我的项目中,有时在进行 "npm install "时,npm开始失败,但在运行 "npm run build "时,它就能正常工作。
这两个目标,即 "install "和 "run build "的内部工作原理有什么不同?
npm install
将依赖项安装到node_modules/
目录中,用于你正在进行的node项目。你可以在另一个node.js项目(模块)上调用install
,将其作为你的项目的一个依赖项来安装。
npm run build
是npm build
的别名,除非你在package.json文件中指定"build"做什么,否则它什么都不做。它让你在你的项目被用于其他项目之前,为你的项目执行任何必要的构建/预处理任务。
根据build的文档,build
被link
和install
命令所调用。
这是npm link和npm install调用的plumbing命令。
的主要区别是:。
npm install是一个npm cli-command,它做预定义的事情,也就是Churro写的,安装指定在 package.json
npm run command-name或npm run-script command-name(*ex.* npm run build)也是一个预定义的cli-command,用于运行你的自定义脚本,其名称是代替"command-name"的。因此,在这种情况下,npm run build是一个 自定义脚本命令,其名称为"build",并将执行任何 例如,**echo 'hello world'在下面的package.json示例中给出)。
需要注意的是:。
还有一点,"npm build "和 "npm run build "是两件不同的事情,"npm build "会做Churro写的事情,但 "npm run build "会做写在 "package.json "中的自定义工作。
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。
干杯!!
npm install
在你的package.json配置中安装depedendencies。npm run build
运行脚本"build" 并创建一个运行你的应用程序的脚本--比方说server.js。npm start
运行"start"脚本,这将是"node server.js"。很难说清楚到底是什么问题,但基本上如果你看一下你的脚本配置,我猜测"build"使用某种构建工具来创建你的应用程序,而"start"假设已经完成了构建,但如果文件不在那里就会失败。
你可能在使用bower或grunt--我似乎记得一个典型的grunt应用程序将定义这些脚本以及一个"clean"脚本来删除最后的构建。
构建工具倾向于在bin/、dist/或build/文件夹中创建一个文件,然后启动脚本会调用该文件--例如,"node build/server.js"。当你的 "npm启动 "失败时,可能是因为你调用了 "npm clean "或类似的命令来删除最新的构建,所以你的应用程序文件不存在,导致npm启动失败。
npm build'的源代码--为了触及这个问题的讨论--在github上,如果你愿意,可以看一看。如果你直接运行 "npm build",并且你定义了一个"build"脚本,它将退出,并要求你以 "npm run-script build "的方式调用你的构建脚本,所以它与 "npm run script "不一样。
我不太清楚npm build
的作用,但它似乎与依赖关系中的后期安装和打包脚本有关。我认为这可能是为了确保任何CLI build scripts's或依赖项所需的本地库在下载软件包后为特定环境而构建。这将是链接和安装调用这个脚本的原因。