亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

gaara / 2247人閱讀

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

前情提要

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

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

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

small module 的錯?

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

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

得救之道,就在其中

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

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

無論你是否面向瀏覽器,將所有依賴都打包進最終的發(fā)布代碼。

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

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

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

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

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

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

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

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

新的習慣

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

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

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

相關(guān)文章

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

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

    Salamander 評論0 收藏0
  • left-pad扯到JS中位運算

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

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

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

    Achilles 評論0 收藏0
  • padStart polyfill

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

    edgardeng 評論0 收藏0

發(fā)表評論

0條評論

gaara

|高級講師

TA的文章

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