为什么npm install&amp;&amp; npm install <pack-name>都需要吗?

时间:2016-12-14 00:14:07

标签: javascript node.js node-modules

为什么我们npm install部分需要npm install base1prestart

如果npm install本身从Git中检索base1,为什么我们需要在npm install base1中提及prestart

对于一个Node.js程序,我看到这里显示的package.json

{
  "name": "user01",
  "version": "1.5.1",
  "description": "",
  "author": "",
  "private": "true",
  "main": "app.js",
  "scripts": {
    "start": "node app.js",
    "prestart": "npm install && npm install base1 && npm install base2"
  },
  "dependencies": {
    "ain2": "*",
    "body-parser": "^1.15.0",
    "express": "^4.13.3",
    "uuid": "*",
    "request": "^2.69.0",
    "traverse": "*",
    "base1": "git+ssh://xxxxxxxxxxx/base1.git",
    "base2": "git+ssh://xxxxxxxxxx/base2.git"
  }
}

2 个答案:

答案 0 :(得分:0)

第一次运行是获取包,第二次是基本初始化它们。

npm install

  

npm install(在包目录中,没有参数):

     

在本地node_modules文件夹中安装依赖项。

npm install package

  

npm install <folder>

     

安装位于文件系统文件夹中的软件包。

来源:NPMJS

答案 1 :(得分:0)

额外命令可能在npm @ 3或npm @ 2的最新版本中无效,每次都会获取git远程。它们可能是某些previous git issues的变通方法,其中代码不会更新到npm install上的最新提交(返回v0.12版本)。指定包可能会强制从git中获取最新版本的代码,而在安装包时,普通npm install将无法执行此操作。

要确认当前发生的情况,请查看git base1包的不同之处。

rm -rf node_modules/base1
npm install -d

rm -rf node_modules/base1    
npm install -d base1

rm -rf node_modules/base1
npm install -d
npm install -d base1

当git中的代码更新后,在调试中运行两个安装而不删除模块

npm install -d
npm install -d base1

如果这是他们的目的,可能不再需要额外的安装。