node_modules 是該好好治一治了

大家好,我是 ConardLi

作爲前端開發者,大家有沒有被 node_modules 困擾過呢?

反正我是有。。。因爲 npm 特殊的包管理機制,往往一個很小的項目就會攜帶一個很大的 node_modules 。相信大家都刷到過下面這張圖,這就是對前端依賴最大的諷刺了。😂

有時候,可能不經意間我們就會引入一個意外的依賴包,或者不小心升級了一個有 break chage 的依賴,還有可能在一個項目中安裝了多個互相沖突的依賴版本。但是每次遇到這種問題,想要排查問題都要花費大量時間。

比如,我們想查詢一個依賴在項目中的安裝情況,我們可能會使用 npm ls 命令,但是這個命令實在是太慢了,而且打印出來的信息而且混亂。

或者直接去 lock 裏面檢查版本?你可能要花費更多的時間,而且不一定能找全。

qnm

最近在逛 Github 發現了一個寶藏 CLI 工具:qnm,它可以幫助我們快速梳理前端依賴信息,並且同時支持 npmyarn

我們可以把它安裝到全局,或者使用 npx 調用:

npm i --global qnm

分析依賴

用法:qnm [module], 我們嘗試查看下所有安裝的 lodash

這意味着, lodash 在我們的項目裏被安裝了 15 次,我們項目直接依賴的版本是 4.17.11,發佈於 3 年前(已經很落後了),其他間接依賴的都是 4.17.21 版本,發佈於 1 周前。

我們來對比下實際的 node_modules 目錄,發現是可以一一對應上的:

再來對比下 npm ls lodash 的結果,相比之下這個真的很慢而且展示比較亂:

你還可以對包進行模糊搜索(直接在命令行輸入 qnm):

另外,還有一些參數選項:

分析空間佔用

你可以使用 qnm doctor 分析 node_modules 目錄中佔用最多空間的內容,這個一分析還是挺讓我喫驚的,有的老項目 node_modules 已經佔用了幾個 G 的空間了。。

調用 qnm doctor --sort duplicates 查看重複依賴佔用的空間:

分析所有模塊

調用 qnm list 命令分析 node_modules 目錄中所有模塊(等同於直接調用 npm ls ,但是要比它的速度和可讀性好太多了)。

模糊匹配

qnm match 命令類似於 grep 命令,可以匹配包含某字符串的任何模塊。

比如我們想查找我們裝了哪些 babel 插件:

怎麼樣,有了這個命令行工具是不是感覺治理 node_modules 要輕鬆一些了?趕緊收藏起來吧(https://github.com/ranyitz/qnm)!

code 祕密花園 這裏有最前沿的前端技術、最新的前端消息、最精品的技術文章、最好用的工具推薦、還有一個有趣的作者。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/sBtHSgV5ym7vLeyC-afIYw