實在忍不住吐槽
說實話有強迫症的我忍了很久了,實在是忍不住寫篇文章來吐槽一下。
標題可能說的有點大了,我要吐槽的是:我可能只需要某一個小小的功能模塊A,結果模塊A依賴B-F這5個模塊,然后B又依賴這10個模塊,C又依賴那20個模塊...一環套一環下來最后需要下載數不清的模塊,雖然下載神馬的都是全自動的,但是這樣真的好么?
下面從幾個方面來吐槽,有不爽的盡管來罵。
文件(夾)的個數
就以下載gulp為例,一個npm install gulp命令下來,一共下載了1221個文件,651個文件夾,占用空間4.12MB。

直接用到的模塊就多達137個.
復制不方便
稍微多引用幾個module,然后node_modules文件夾大的嚇死人,文件個數多的嚇死人,眾所周知,很多時候文件個數多的文件夾甚至可能比文件體積大的文件夾復制更慢,且不說復制慢,就連刪除都慢。
有的人可能會說,有了強大的 npm install 還需要復制干嘛,我想說的是,我自己一個小項目為什么要那么依賴於網絡?哪天斷網了呢?假如沒有淘寶等國內npm鏡像呢?每次換個地方都要從老外的服務器下載那么多文件,說得不好聽點,哪天 npmjs.com 掛了呢?
文件路徑太深導致的問題
還是以gulp安裝為例,我復制吧,結果復制不了:

我打開某一個很深的文件吧,結果打不開:

你打不開是吧,那我把你剪切到其它文件夾,結果剪切也剪不了:

復制剪切打開都沒用,那我直接把你刪除了吧,結果刪除都刪除不了:

真是醉了,我說我把路徑復制出來看一下到底有多么深,結果復制出來這個樣子:
F:\WORKSP~1\OTT-EP~1\WEBCON~1\RESOUR~1\js_dev\NODE_M~1\NPMINS~1\gulp\39E757~1.1\gulp\NODE_M~1\GULP-U~1\NODE_M~1\DATEFO~1\NODE_M~1\meow\NODE_M~1\READ-P~1\NODE_M~1\read-pkg\NODE_M~1\NORMAL~1\NODE_M~1\VALIDA~1\NODE_M~1\SPDX-C~1\node_modules\spdx-license-ids
以上還只是一個gulp的例子,估計其它比這個深得深的module不計其數。
過於依賴第三方module
阿貓阿狗的小功能都去引用一個第三方模塊,很多時候一個模塊就幾行代碼,結果我引用你,你引用他,他又引用他,一旦人家這個模塊出了問題你就慘了。
舉個例子:
一個叫
isArray的軟件包一天的下載量有88萬,2016年2月有1800萬次下載量,它本身就一行代碼。NPM生態系統中的許多開發者看起來寧願復用其他人寫好的代碼而不是自己寫。這種做法存在嚴重的安全隱患,因為一個被廣泛使用的軟件包存在bug,你的代碼也會受到影響,而你卻無法自己去修正
代碼質量參差不齊
誰敢說發到npm上面去的module都是代碼質量很高的?不信你隨便到node_modules文件夾下去打開幾個js看看,好多代碼連最基本的代碼風格都惡心的要屎。
最想吐槽的npm install
看似很方便,各大網站上總是喜歡在最顯眼的地方寫上一行看似方便到爆的命令npm install xxx,好像在標榜:看,我們的東西多么方便啊,一行命令就搞定一切了!其實呢,簡單的背后暗藏了一大堆的坑,稍微復雜一點的框架(或者叫功能)總有那么多需要你去定制化的東西,然后接下來還是需要你去了解他們大量的配置參數。

結語
npm這種代碼復用的思想是很好的,但是發展到今天我覺得已經變質了,它的本質是為了極大的促進代碼復用,減少重復開發,但是它帶來的問題比這個方便更嚴重,反正,我是已經無力吐槽了。
