原文鏈接:https://mp.weixin.qq.com/s/nijxVWj-E5U08DX2fl3vgg
最近有個剛學前端的小伙伴問我:“為什么我的node_modules這么大?為什么別人裝依賴那么快?npx到底是啥玩意兒?”
相信不少人都跟他一樣,對npm的認知還停留在“npm install”階段。今天我就來分享幾個超級實用的npm技巧,幫你擺脫依賴安裝的噩夢!
一、package.json里的秘密
先來說說package.json這個文件,它可不僅僅是項目的身份證。
dependencies和devDependencies到底啥區別?
簡單說就是:dependencies是項目運行時必須的依賴,比如react、vue這些。devDependencies是開發時才需要的,比如eslint、webpack這些打包工具。
看個例子就明白了:
{"dependencies": {"react": "^17.0.2", // 項目運行必須"axios": "^0.21.1" // 項目運行必須},"devDependencies": {"eslint": "^7.18.0", // 只有開發時需要"webpack": "^5.11.0" // 只有開發時需要}
}
版本號前的^和~有啥講究?
這個特別重要!~表示允許小版本更新,^允許次版本更新。
舉個例子:
- ~1.2.3:可以更新到1.2.x,但不能到1.3.0
- ^1.2.3:可以更新到1.x.x,但不能到2.0.0
{"dependencies": {"lodash": "~4.17.0", // 只會更新到4.17.x"moment": "^2.29.0" // 可以更新到2.x.x}
}
二、npm install的隱藏技巧
你是不是還在傻傻地等著npm install慢慢下載?試試這兩個技巧:
1. 使用npm ci替代npm install
在CI/CD環境或者想要確保依賴一致時,用npm ci比npm install更靠譜:
npm ci # 完全按照package-lock.json安裝,速度更快更穩定
2. 離線優先模式
如果你之前安裝過相同的依賴,可以這樣加速:
npm install --prefer-offline # 優先使用本地緩存
三、npx:不用全局安裝也能運行命令
這是我最近發現的神器!以前要全局安裝腳手架工具,現在用npx直接運行:
# 以前需要先全局安裝
npm install -g create-react-app
create-react-app my-app# 現在直接用npx
npx create-react-app my-app # 自動下載運行,用完即刪
再舉個例子,想用webpack但不想全局安裝:
npx webpack --config webpack.config.js # 臨時使用webpack
四、安全漏洞檢查
現在網絡安全這么重要,npm也提供了安全檢查功能:
npm audit # 檢查項目依賴的安全漏洞
npm audit fix # 自動修復可修復的漏洞
如果發現嚴重漏洞,最好立即處理。我曾經有個項目就因為依賴的舊版本庫有漏洞,差點出大事!
五、其他實用小技巧
清理緩存
有時候安裝出問題,可能是緩存作祟:
npm cache clean --force # 清理npm緩存
查看包信息
想了解某個包的信息?不用去官網:
npm view react # 查看react包的詳細信息
快速初始化項目
不想一步步回答npm init的問題?
npm init -y # 一鍵生成默認package.json
實際工作場景示例
假設你要創建一個新的React項目并檢查安全:
# 1. 創建項目目錄
mkdir my-react-app
cd my-react-app# 2. 快速初始化
npm init -y# 3. 安裝React(生產依賴)
npm install react react-dom# 4. 安裝開發工具(開發依賴)
npm install -D webpack webpack-cli# 5. 檢查安全漏洞
npm audit# 6. 如果有漏洞就修復
npm audit fix
寫在最后
用了這些技巧后,我們團隊的依賴安裝時間平均減少了40%,再也不用對著node_modules發呆了。
其實工具用的好,真的能省下不少時間。這些技巧都是我踩了無數坑后總結出來的,希望對你也有幫助!
你還有什么好用的npm技巧?歡迎在評論區分享交流~
PS:如果你發現某個依賴安裝特別慢,可以試試切換npm源到淘寶鏡像,速度會快很多哦!
npm config set registry https://registry.npmmirror.com/