2016-12-14 114 views
0

为什么我们在prestart部分需要npm installnpm install base1为什么需要npm install && npm install <pack-name>?

如果npm install本身从Git检索base1那么为什么我们需要提及npm install base1prestart

对于一个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" 
    } 
} 
+0

你的npm注册表中是否有'base1'和'base2'? – Matt

+0

没有base1和base2是由其他团队编写的模块,它在git中签入。所以拉动它使用git url – Madrini

+0

啊不知道..看起来如果package是在package.json中列出的,'npm'知道先看看本地定义。 – Matt

回答

0

第一次运行的是拿到包,二是基本初始化。

NPM安装

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

在当地node_modules文件夹中安装的依赖关系。

NPM安装包

npm install <folder>

安装是坐在一个文件夹中的文件系统中的包。

来源:NPMJS

+0

'base1'和'base2'将从npms引用框架(无论package.json位于何处)安装到'node_modules/base [12]'。 – Matt

+0

npm安装自己在node_modules中安装base1和base2。那么npm install base1会做多少额外的工作呢? – Madrini

0

额外的命令可能什么也不做NPM @ 3个或最新版本的NPM的@ 2,其中远程Git被取出每次。他们可能是一些previous git issues的解决方法,其中代码不会更新到npm install(返回到v0.12版本)的最新提交。指定软件包可能会强制从git获取最新版本的代码,这是在安装软件包时不会执行的操作。

要确认当前发生的情况,请查看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 

额外的安装很可能不需要任何更多的,如果这是他们的目的模块。

+0

嗨马特,谢谢你的解释。但是我的package.json应该如何不用于每次只读取git模块并且只需要第一次和发生一些更新 – Madrini

+0

我认为目前不可能。看来npm每次获取远程的方法仍然存在。获取非常快,因为它只需确认本地副本与远程回购有关,而不是下载所有内容。 – Matt