Npm 安裝包出現一大堆 WARN??

1、問題

使用 npm 安裝第三方包,有時會出現一大堆 WARNvue

image.png

2、分析

如今無論什麼框架,vueumiwebpackbabeleslint 都講究插件化開發,對普通開發人員提供插件書寫接口方便自行擴展。想法是好的,可是存在一些問題。node

eslint-config-react-app@2.1.0eslint的一個插件,寫這個插件的時候 eslint 版本爲 4.1.1。eslint 自己須要不斷優化升級,版本更迭過程當中會不停的新增 api、廢棄 api。也就是說,eslint-config-react-app@2.1.0 確定適用 eslint@4.1.1,但不必定適用 eslint@6.x(6.x 中可能會廢棄相關api)。普通用戶並不知道這一點,傻乎乎的下載最新的 eslinteslint-config-react-app 最新包,結果沒法正常運行。react

Npm 爲了解決上面的問題,在 npm@1.2.10 以後提供了 peerDependencies 屬性,具體使用以下,插件包 eslint-config-react-app 的 package.json 中添加該屬性。webpack

{
  // ....
  "peerDependencies": {
    "eslint": "^4.1.1"
  }
}

此時安裝插件包 eslint-config-react-app,npm 會檢測 node_modules 目錄下有沒有 eslint@4.x 的包,若是沒有 npm 就會報警告⚠️ WARN,這樣能夠提示用戶這裏可能會有問題哦~不像以前運行報錯而用戶卻徹底無感。(在 npm@5.x 以前會直接報錯 ERR,5.x 以後版本改成報警告)git

peerDependencies 的出現必定程度上緩解了插件包依賴問題,但 未完全解決問題。舉例:eslint 版本的升級並不必定會大改 api,插件包eslint-config-react-appeslint6.x 也能正常運行,因爲插件做者將 peerDependencies 寫的太死(4.x),就會出現問題。你沒法期望每一個插件做者能夠隨時跟蹤 eslint 主版本的變動,將包依賴問題丟給 來作在 dk 看來是最不靠譜的事。github

webpack 相關插件都由官方維護,安裝過程發現沒有出現一行 WARN,非常清爽,那種各類引包造輪子的框架是沒法避免這種隱患的。web

3、解決

  • 升級相關依賴包,期待插件做者有更改依賴版本;
  • 去插件包的 github 提 pr,期待做者看處處理併發布新包;
  • 尋找符合條件的替代插件;
  • 無視它,儘管這是一個隱患,強迫症患者會被逼死。
相關文章
相關標籤/搜索