成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

得救之道,就在其中——關(guān)于這次的 kik,left-pad,和 npm 事件

gaara / 2201人閱讀

摘要:是的,就是這樣的錯(cuò)很快就發(fā)布了修正。各種擔(dān)憂質(zhì)疑指向社區(qū)一直提倡和推動的和理念。得救之道,就在其中在的里回復(fù)說不要依賴于其他人,附了關(guān)于的鏈接,并且最后再次強(qiáng)調(diào)依然是合理的哲學(xué)。解除了用戶為你的代碼打包的負(fù)擔(dān)。

前情提要

今天 npm 圈子雞犬不寧,原因是一個(gè)不過 11 行的工具函數(shù) left-pad 被作者從 npm 上撤下,所有直接和間接依賴它的包就這么齊刷刷掛了,包括 babel 和 react-native 這樣每天安裝數(shù)萬的熱門項(xiàng)目。

而 Azer 刪除他所有的 npm 包又是另一個(gè)故事:Azer 寫了一個(gè)工具叫 kik 發(fā)布在 npm 上,這天有個(gè)同名的公司律師找上門要求他刪掉,Azer 不從,這律師就找上 npm,npm 把包的管理權(quán)限轉(zhuǎn)給了這家公司——當(dāng)然,Azer 就怒了,從 npm 上解放了所有自己發(fā)布的包。

是的,就是這樣 ╮(╯_╰)╭

small module 的錯(cuò)?

babel 很快就發(fā)布了修正。然而拋開這兩個(gè)故事不去討論,鑒于現(xiàn)在各種組件的依賴樹之深,這件事暴露出的問題(一直都在,只是沒有這么痛地領(lǐng)悟過)已經(jīng)讓人無法安心地 npm install 了——更多的項(xiàng)目都不可能像 babel 這樣活躍,第一時(shí)間發(fā)布修正。

各種擔(dān)憂、質(zhì)疑指向 npm 社區(qū)一直提倡和推動的 small module 和 semver 理念。這個(gè)方向錯(cuò)了么?也有人怪罪 npm unpublish 是萬惡之源,這么想就有點(diǎn)表面了。

得救之道,就在其中

Isaacs 在 left-pad 的 Issue 里回復(fù)說“不要依賴于其他人”,附了關(guān)于 bundledDependencies 的鏈接,并且最后再次強(qiáng)調(diào) small module 依然是合理的哲學(xué)。

這篇回復(fù)其實(shí)比較含糊,甚至看上去有點(diǎn)矛盾。Rollup 作者講得更明白些,解決之道就一句話:

無論你是否面向?yàn)g覽器,將所有依賴都打包進(jìn)最終的發(fā)布代碼。

這么做將使你的項(xiàng)目僅僅在打包的時(shí)候依賴那些 dependencies,一旦發(fā)布完成,就不再需要依賴樹上的所有作者們保持他們的任何承諾。這就是 Isaacs 所說:不要依賴于其他

事實(shí)上 Atom 也在受影響之列,但除了 Atom 的開發(fā)者之外,用戶是沒有感覺的——就這么簡單。

此原則除了可以解決這次的 left-pad 災(zāi)難之外,還有成堆的好處,哪怕每一項(xiàng)都不是殺手級的,這么堆起來也還是很可觀的:

節(jié)省 npm install 的時(shí)間。依次去下載整個(gè)依賴樹是很耗時(shí)間的,而且還附帶下載了更多的 README、package.json 之類。這些磁盤空間也可以省下來了。

啟動更快。你知道 Nodejs 的 require() 執(zhí)行慢成狗么?

你的包更加可靠。依賴樹中的 bug 不能靠用戶自行 npm update 來修復(fù)了,你得自己重新打包發(fā)版本,但是再也不用擔(dān)心出 left-pad 這種幺蛾子,哪個(gè)更重要?

也更加安全。理論上,npm 托管的那些代碼隨時(shí)可能被注入惡意代碼,比如現(xiàn)在 Azer 撤下來的包,不少已經(jīng)被其他人重新發(fā)布上去,可是天知道都是誰放了些什么代碼……用戶只不過 npm install 了一下。

解除了用戶為你的代碼打包的負(fù)擔(dān)。 負(fù)擔(dān)其實(shí)并不是我們擔(dān)心的,只是如果用戶喜歡用 webpack 打包而我們的代碼是 browserify 圈的呢?PouchDB 就碰上了這種情況。

新的習(xí)慣

養(yǎng)成新的習(xí)慣,開始為你發(fā)布的代碼做預(yù)打包吧。bundledDependencies 已經(jīng)等候多時(shí)了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79014.html

相關(guān)文章

  • 開發(fā)者對 npm 公司不滿,unpublish 了自己所有模塊

    摘要:早上刷,看到阮一峰老師發(fā)了條推文今天凌晨,一個(gè)開發(fā)者對公司不滿,了自己的所有模塊。目前,已經(jīng)緊急發(fā)布了不包括該模塊的新版本。在未經(jīng)我允許的情況下,更改了此模塊的所有權(quán)。而作者刪除了如此多的模塊,其中包括在內(nèi)的眾多知名項(xiàng)目都受到了影響。 早上刷 Twitter,看到阮一峰老師發(fā)了條推文: 今天凌晨,一個(gè)開發(fā)者對NPM公司不滿,unpublish了自己的所有模塊。其中包括被廣泛使用的lef...

    Salamander 評論0 收藏0
  • left-pad扯到JS中位運(yùn)算

    摘要:原碼補(bǔ)碼和反碼原碼一個(gè)數(shù)在計(jì)算機(jī)中是以二進(jìn)制的形式存在的,其中第一位存放符號正數(shù)為負(fù)數(shù)為。中的位運(yùn)算在中按位操作符會將其操作數(shù)轉(zhuǎn)成補(bǔ)碼形式的有符號位整數(shù)。原文鏈接由扯到中的位運(yùn)算 這個(gè)話題的由來是2016年3月份的時(shí)候 NPM 社區(qū)發(fā)生了‘left-pad’事件,不久后社區(qū)就有人發(fā)布了用來補(bǔ)救的,也是現(xiàn)在大家能用到的 left-pad 庫。 最開始這個(gè)庫的代碼是這樣的。 module....

    LeoHsiun 評論0 收藏0
  • Node程序debug小記

    摘要:當(dāng)前的部分代碼狀態(tài)超時(shí)再縮小了范圍以后,進(jìn)一步進(jìn)行排查。函數(shù)是一個(gè)很簡單的一次性函數(shù),在第一次被觸發(fā)時(shí)調(diào)用函數(shù)。因?yàn)樯鲜鍪褂玫氖?,而非,所以在獲取的時(shí)候,肯定為空,那么這就意味著會繼續(xù)調(diào)用函數(shù)。 有時(shí)候,所見并不是所得,有些包,你需要去翻他的源碼才知道為什么會這樣。 背景 今天調(diào)試一個(gè)程序,用到了一個(gè)很久之前的NPM包,名為formstream,用來將form表單數(shù)據(jù)轉(zhuǎn)換為流的形式進(jìn)行...

    Achilles 評論0 收藏0
  • padStart polyfill

    摘要:原文鏈接歡迎今天在看新增的部分的時(shí)候剛好看到的這個(gè)方法,好像還挺實(shí)用的,而且也想在正式開始工作之前先找找寫代碼的感覺,于是順手其實(shí)還是花了不少時(shí)間的就實(shí)現(xiàn)了這個(gè)。相關(guān)的用法在上有說明。,練手的目的算是達(dá)到了。 ? 原文 鏈接:歡迎 star. 今天在看 ES7 新增的部分 Api 的時(shí)候剛好看到 padStart 的這個(gè)方法,好像還挺實(shí)用的,而且也想在正式開始工作之前先找找寫代碼的感覺...

    edgardeng 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<