2016-12-14 146 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