2017-08-23 206 views
0

我們有一個共享庫,它爲我們安裝了所有的自舉代碼。大多數人在他們的前端使用原始Javascript,但也有一些人使用Typescript。可選的NPM依賴項安裝

package.json是否有可能還包含僅用於Typescript的依賴關係列表(如所有@types和其他Typescript相關模塊),只有在您提供特定標誌時纔會安裝它們?即運行npm install只會安裝「普通」軟件包,但npm install --some-flag也會安裝附加軟件包。

+0

用戶如何在** package.json中表達這一點? –

+0

這就是我要問的。這是否可能?也許像'additionalDependencies'? – Kousha

回答

0

也許你正在尋找的是optionalDependencies和--no-optional標誌的組合使用。

https://docs.npmjs.com/files/package.json

optionalDependencies

如果可以使用的依賴,但你想NPM繼續,如果它 無法找到或無法安裝,那麼你可以把它在 optionalDependencies對象中。這是包名稱到版本 或url的映射,就像依賴關係對象一樣。不同的是, 構建失敗不會導致安裝失敗。

處理缺少 依賴關係仍然是您的程序的責任。例如,像這樣:

try { 
    var foo = require('foo') 
    var fooVersion = require('foo/package.json').version 
} catch (er) { 
    foo = null 
} 
if (notGoodFooVersion(fooVersion)) { 
    foo = null 
} 

// .. then later in your program .. 

if (foo) { 
    foo.doFooThings() 
} 

條目中optionalDependencies將覆蓋依賴同名 的條目,所以它通常最好只放一個地方。

而且從https://docs.npmjs.com/cli/install

--no-可選參數將防止 可選的依賴正在安裝。

+0

是否有相反的情況?我想要默認行爲不安裝可選,並且只安裝可選項,如果我提供標誌 – Kousha

+0

我不知道這樣的事情。如果它如此重要,那麼爲什麼不寫一個這樣的腳本呢? – anon