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

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

我注意到在我的项目中,有时在进行 "npm install "时,npm开始失败,但在运行 "npm run build "时,它就能正常工作。

这两个目标,即 "install "和 "run build "的内部工作原理有什么不同?

解决办法

npm install将依赖项安装到node_modules/目录中,用于你正在进行的node项目。你可以在另一个node.js项目(模块)上调用install,将其作为你的项目的一个依赖项来安装。

npm run buildnpm build的别名,除非你在package.json文件中指定"build"做什么,否则它什么都不做。它让你在你的项目被用于其他项目之前,为你的项目执行任何必要的构建/预处理任务。

根据build的文档buildlinkinstall命令所调用。

这是npm link和npm install调用的plumbing命令。

评论(3)

的主要区别是:。

npm install是一个npm cli-command,它做预定义的事情,也就是Churro写的,安装指定在 package.json

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

需要注意的是:。

  1. 还有一点,"npm build "和 "npm run build "是两件不同的事情,"npm build "会做Churro写的事情,但 "npm run build "会做写在 "package.json "中的自定义工作。

  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

干杯!!

评论(3)
  • npm install在你的package.json配置中安装depedendencies。
  • npm run build运行脚本"build" 并创建一个运行你的应用程序的脚本--比方说server.js。
  • npm start运行"start"脚本,这将是"node server.js&quot。

很难说清楚到底是什么问题,但基本上如果你看一下你的脚本配置,我猜测"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或依赖项所需的本地库在下载软件包后为特定环境而构建。这将是链接和安装调用这个脚本的原因。

评论(0)