使用yarn配置resolutions解決依賴錯誤打賞

去年3月份,npm圈子發生過這樣一件事,一個不過 11 行的工具函數left-pad被作者從npm上撤下,所有直接和間接依賴它的包就這么齊刷刷掛了,包括babel和react-native這樣每天安裝數萬的熱門項目。而Azer刪除他所有的npm包又是另一個故事:Azer寫了一個工具叫kik發布在npm上,這天有個同名的公司律師找上門要求他刪掉,Azer不從,這律師就找上npm,npm把包的管理權限轉給了這家公司——當然,Azer就怒了,從npm上解放了所有自己發布的包。

事件之后,有人給出了類似問題的解決之道,使用npm的bundledDependencies。不過,很多庫作者并不會真的這樣用起來,于是,今天又碰到了類似的問題,vue前端界自然是人盡皆知,配套的vue-loader更可謂是必需品,就是在vue-loader里引入的一個庫——js-beautify,今天從1.6.14更新到了1.7.0,但是作者似乎寫了個bug,于是依賴于node構建的我們,出現了如此異常

Module build failed: Error: Cannot find module './lib/beautify'
//...

官方issue里便出現了如此景象
js-beautify

附issue鏈接去感受一下:
https://github.com/beautify-web/js-beautify/issues/1247

很多人說本地安裝npm i [email protected] -S可解決,我第一時間想到的也是這樣,然而,移除、添加、再移除、再添加,幾經周折后發現并不好用,可能因為我們都在用yarn的緣故吧,這里沒再嘗試,最后同事注意到有網友給出用yarn提供的resolutions,嘗試發現果然可以。本地嘗試可以后服務端構建依然失敗,不過雖然yarn官網顯示已經支持resolutions,但中文版暫未翻譯該部分文檔,考慮到1.0前后支持的workspaces屬性文檔也是未翻譯,猜測是服務器版本過舊,升級后完美支持。

下面附操作步驟(使用yarn前更新到1.x.x)

rm -rf node_modules
rm -rf yarn.lock
//package.json在dependencies平級位置增加(dependencies中無需添加):
"resolutions": {
    "js-beautify": "1.6.14"
}
yarn

如果是npm,可以直接嘗試

npm i [email protected] -S

關于resolutions詳情請見
https://yarnpkg.com/zh-Hans/docs/selective-version-resolutions

使用yarn配置resolutions解決依賴錯誤
文章《使用yarn配置resolutions解決依賴錯誤》二維碼
  • 微信打賞
  • 支付寶打賞

已有4條評論

  1. 游客 108

    漲知識了

    2018-07-30 09:22 回復
  2. 游客 899

    感謝分享,贊一下

    2017-12-13 16:18 回復
  3. 游客 835

    文章不錯支持一下

    2017-09-23 11:31 回復
  4. 游客 795

    學習了

    2017-09-21 11:11 回復

(必填)

(必填)

(可選)

黑龙江22选5开奖