2015-11-01 111 views
2

如果我編寫一個包,我確定需要Node 4或更高版本,我不希望它可以使用舊版本進行安裝。發佈嚴格要求最低節點版本的npm包

我知道package.json引擎字段,但這只是建議(只會導致警告)。而enginesStrict已被棄用。

那麼我該怎麼辦?

一個想法是有一個預安裝腳本,用於在節點版本和錯誤不足時阻止安裝,從而檢查節點版本和錯誤。這樣做有什麼問題嗎?還有更好的方法嗎?

+1

爲什麼你需要做任何事情?有人使用它會看到節點v4是預期的,所以如果它不起作用,他們不應該感到驚訝。 –

+0

@FelixKling很容易錯過關於期望的Node版本的一些警告,尤其是在各種軟件包的安裝後腳本中產生的一些噪音 – callum

+0

個人而言,我只是在自述文件中添加備註。 –

回答

1

如果您想獲得良好體驗,請使CLI入口點標準爲ES5和CommonJS,檢測節點版本(process.version),然後打印詳細且有用的消息,然後退出非零值。請記住,您的模塊可能會安裝一些節點版本,然後用戶使用nvm或他們的PATH或其他軟件,然後在不同的版本下運行您的代碼。因此,我認爲在運行時很好地失敗是最重要的。如果你願意,你也可以選擇在安裝時失敗。

+0

好的謝謝。但是,剩下的一個問題是,如果我的CLI依賴於像node-sass這樣的實際構建方式,則取決於節點版本。這意味着用戶在升級節點後必須重新安裝CLI。因此,在預安裝的早期失敗似乎是最好的。我也可以按照你的建議做一次運行時檢查。 – callum

+0

我認爲node-sass問題應該由'npm rebuild'處理,它是處理節點版本X上的安裝並嘗試在節點版本Y上運行的官方方式。 –