node_modules 是該好好治一治了
大家好,我是 ConardLi。
作爲前端開發者,大家有沒有被 node_modules
困擾過呢?
反正我是有。。。因爲 npm 特殊的包管理機制,往往一個很小的項目就會攜帶一個很大的 node_modules
。相信大家都刷到過下面這張圖,這就是對前端依賴最大的諷刺了。😂
有時候,可能不經意間我們就會引入一個意外的依賴包,或者不小心升級了一個有 break chage
的依賴,還有可能在一個項目中安裝了多個互相沖突的依賴版本。但是每次遇到這種問題,想要排查問題都要花費大量時間。
比如,我們想查詢一個依賴在項目中的安裝情況,我們可能會使用 npm ls
命令,但是這個命令實在是太慢了,而且打印出來的信息而且混亂。
或者直接去 lock 裏面檢查版本?你可能要花費更多的時間,而且不一定能找全。
qnm
最近在逛 Github
發現了一個寶藏 CLI
工具:qnm
,它可以幫助我們快速梳理前端依賴信息,並且同時支持 npm
和 yarn
。
我們可以把它安裝到全局,或者使用 npx
調用:
npm i --global qnm
分析依賴
用法:qnm [module]
, 我們嘗試查看下所有安裝的 lodash
:
這意味着, lodash
在我們的項目裏被安裝了 15
次,我們項目直接依賴的版本是 4.17.11
,發佈於 3 年前(已經很落後了),其他間接依賴的都是 4.17.21
版本,發佈於 1 周前。
我們來對比下實際的 node_modules
目錄,發現是可以一一對應上的:
再來對比下 npm ls lodash
的結果,相比之下這個真的很慢而且展示比較亂:
你還可以對包進行模糊搜索(直接在命令行輸入 qnm
):
另外,還有一些參數選項:
-
--no-remote
:禁止從npm
獲取遠程數據,可以加快命令速度; -
-o , --open
:使用默認編輯器打開模塊的package.json
文件; -
-d, --debug
:查看完整的錯誤消息,主要用於調試; -
--disable-colors
:禁用大部分顏色和樣式,例如版本顏色。
分析空間佔用
你可以使用 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