依賴包版本鎖 or 不鎖?這個(gè)問題吵起架來拉都拉不住...

這個(gè)問題聊好多年了闷营,雙方觀點(diǎn)旗幟鮮明,各有各的道理知市,搞場辯論賽一定很精彩傻盟。最近由于 antd 的一個(gè) bug 版本被重新談起,然而一直沒有最優(yōu)解嫂丙。

假如不鎖版本娘赴,可能睡一晚產(chǎn)品發(fā)布就掛了,怪誰跟啤,自己人的開源項(xiàng)目還可以找找诽表,react 的鍋總不能飛美國去 Meta 公司找 Dan 吧。假如鎖了版本隅肥,1 不能跟進(jìn)安全修復(fù)類 bug竿奏,2 時(shí)間久了升不動(dòng)也不愿升,筑起技術(shù)債腥放,給后人留屎山泛啸。

除了穩(wěn)定性,這里還有人性的問題秃症,就是誰該對此負(fù)責(zé)候址。因?yàn)槿絾栴}背個(gè)故障,誰都會(huì)覺得冤枉种柑。相反如果有人說別鎖了岗仑,我對故障負(fù)責(zé),那大部分人也就都不會(huì)有意見了聚请,愛鎖不鎖荠雕。

聊這個(gè)話題,還有兩個(gè)點(diǎn)需要提前對齊知識(shí)儲(chǔ)備的。1舞虱、依賴分 node 和 browser欢际,兩者的解法不同,后者需要考慮 tree-shaking矾兜、補(bǔ)丁损趋、產(chǎn)物尺寸等 2、依賴分直接依賴和間接依賴椅寺,鎖直接依賴只能解部分問題浑槽。

問題的根源是 semver。理想的 semver 是 break.feat.bugfix返帕,現(xiàn)實(shí)的 semver 是 break.break.break桐玻。發(fā) break 的 bugfix 版本是社區(qū)的常規(guī)操作。但是在責(zé)怪庫作者之前荆萤,有些場景要除外镊靴,比如使用了私有 API、通過 HACK 的方式關(guān)閉某些功能链韭,依賴組件庫內(nèi)部的 DOM 結(jié)構(gòu)和 CSS 類名偏竟,更新后掛了,這就只能怪自己了敞峭。

是問題就有解踊谋,社區(qū)已有不少。臨時(shí)的比如 cnpm 提供的 bug-versions旋讹,npm 提供的 resolutions殖蚕,侵入式改代碼的 patch-package 等;長期的比如 npm沉迹、yarn 和 pnpm 具備的 lock 能力睦疫,tnpm/cnpm 目前暫不支持,但可以用 yarn mode鞭呕。

內(nèi)部解還有 DEVOPTS 平臺(tái)的迭代鎖笼痛,作為鎖與不鎖之間的端水大師,在整體不鎖的策略下琅拌,確保迭代內(nèi)是穩(wěn)定的缨伊。能解部分問題,但鎖支持者應(yīng)該是不會(huì)滿意的进宝,因?yàn)榭缌说筒环€(wěn)定了刻坊,而建迭代又是高頻操作。

那有沒有兩全的辦法党晋?既要穩(wěn)定谭胚,又要更新徐块,還有有人負(fù)責(zé)。有灾而!一個(gè)思路是「中間商鎖依賴胡控,定期更新,并對此負(fù)責(zé)」旁趟≈缂ぃ框架是開發(fā)者的倒數(shù)第二道防線,自然而然就應(yīng)該是這個(gè)中間商锡搜。

前面說依賴分 node 和 browser橙困。node 部分已經(jīng)這么做了,umi 鎖依賴耕餐,定期更新凡傅,出問題了 umi 負(fù)責(zé)。大家用 umi 3 或者 bigfish 3 應(yīng)該很少再有遇到因三方 node 庫比如 babel肠缔、webpack 更新導(dǎo)致的問題夏跷。比如之前的 coa 掛馬事件,就完全傷不到我們明未。

背后主要是 umi 層對依賴做了徹底鎖槽华,包含間接依賴,通過預(yù)打包依賴的方式亚隅,就算再過 10 年硼莽,也不會(huì)出現(xiàn)因 node 依賴更新導(dǎo)致 umi 掛的情況庶溶。此外還有些細(xì)節(jié)煮纵,比如 babel runtime 和 polyfill 等 browser 依賴的鎖定等。

能套用到 browser 依賴嗎偏螺?有點(diǎn)困難行疏。1、徹底鎖的問題套像,browser 要考慮尺寸酿联,預(yù)打包會(huì)讓 tree-shaking 失效 2、回歸的成本問題夺巩,比如 antd 庫的回歸贞让,除了人肉回歸大量項(xiàng)目,沒想到萬全的方法 3柳譬、不像 node 庫大部分問題在流程中就能發(fā)現(xiàn)喳张,browser 庫直接影響線上,所以風(fēng)險(xiǎn)更高美澳。

問題 1 是工程問題销部,大概率是有解的摸航,現(xiàn)在沒有解再過幾年來看看可能就有了,我想到的是 importmaps 鎖舅桩,借助 esmi 服務(wù)酱虎,可解尺寸問題;問題 2 需要人擂涛,群里得知 LOWCODE 平臺(tái)維護(hù)的 xxx-antd 每次迭代 N 人日保障读串,雖不能完全確保沒問題,但相比盲升應(yīng)該是更是靠譜的歼指;群里還有聊到灰度的方案爹土,解法是加延遲,讓一個(gè)群體或不重要的業(yè)務(wù)先踩坑踩身,避免對重要業(yè)務(wù)的影響胀茵。

所以 importmaps 鎖 + 有人擔(dān)保的類 xxx-antd 中間依賴 + 灰度可能是 browser 依賴的完美解。至于 procode 為啥直接用 xxx-antd 不夠完美挟阻?因?yàn)殚g接依賴沒鎖琼娘。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市附鸽,隨后出現(xiàn)的幾起案子脱拼,更是在濱河造成了極大的恐慌,老刑警劉巖坷备,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熄浓,死亡現(xiàn)場離奇詭異,居然都是意外死亡省撑,警方通過查閱死者的電腦和手機(jī)赌蔑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竟秫,“玉大人娃惯,你說我怎么就攤上這事》拾埽” “怎么了趾浅?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長馒稍。 經(jīng)常有香客問我皿哨,道長,這世上最難降的妖魔是什么纽谒? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任证膨,我火速辦了婚禮,結(jié)果婚禮上佛舱,老公的妹妹穿的比我還像新娘椎例。我一直安慰自己挨决,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布订歪。 她就那樣靜靜地躺著脖祈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刷晋。 梳的紋絲不亂的頭發(fā)上盖高,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音眼虱,去河邊找鬼喻奥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛捏悬,可吹牛的內(nèi)容都是我干的撞蚕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼过牙,長吁一口氣:“原來是場噩夢啊……” “哼甥厦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寇钉,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤刀疙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后扫倡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谦秧,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年撵溃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疚鲤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡征懈,死狀恐怖石咬,靈堂內(nèi)的尸體忽然破棺而出揩悄,到底是詐尸還是另有隱情卖哎,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布删性,位于F島的核電站亏娜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蹬挺。R本人自食惡果不足惜维贺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望巴帮。 院中可真熱鬧溯泣,春花似錦虐秋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肢簿,卻和暖如春靶剑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背池充。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工桩引, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人收夸。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓坑匠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卧惜。 傳聞我的和親對象是個(gè)殘疾皇子笛辟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容