本文參考:
上一篇文章 npm總結(一)中介紹了npm
的一些基本使用和工作原理相關的內容,本文將在此基礎上,介紹npm
在實際應用中的一些命令使用和其他高級使用。
1. npm 常用命令詳解
1.1 npm init 引導輸出一個package.json
文件
- 語法介紹:調用腳本輸出一個初始化的
package.json
文件 - 命令別名:
create
,innit
- 參數介紹:
-
--force
:簡寫-f
,跳過引導交互,快速生成默認的package.json
文件 -
--yes
:簡寫-y
,同上 -
--scope
:同npm init
,與無參數時相同,交互生成package.json
文件
1.2 npm install 安裝模塊
在 npm總結(一)中,已經對其做了詳細的介紹和使用,那么下面就再總結一下該命令的使用語法:
- 語法介紹:
-
npm install (with no args, in package dir)
:直接根據應用中的package.json
或package.lock.json
文件來安裝項目或模塊需要的依賴 -
npm install [<@scope>/]<pkg>
:安裝已發布到npm
倉庫的包名,默認下載latest
最新發布版 -
npm install [<@scope>/]<pkg>@<tag>
:安裝通過tag
標記獲取到的版本 -
npm install [<@scope>/]<pkg>@<version>
:安裝指定版本的包 -
npm install [<@scope>/]<pkg>@<version range>
:安裝通過semver
規范匹配到的版本 -
npm install <folder>
:安裝本地包 -
npm install <tarball file>
:安裝gzip
壓縮文件 -
npm install <tarball url>
:安裝可下載到gzip
壓縮包的鏈接 -
npm install <git url>
:安裝通過git
鏈接獲取到的包
命令別名:
i
,add
參數介紹:
- 無參數:同
--save-prod
-
--global
:簡寫-g
,安裝全局依賴 -
--save-prod
:同-save
,簡寫-S
,將依賴信息加入到dependencies
(生產環境的依賴) -
--save-dev
:簡寫-D
,將依賴信息加入到devDependencies
(開發環境的依賴) -
--save-optional
:簡寫-O
,將依賴信息加入到optionalDependencies
(可選階段的依賴) -
--save-exact
:簡寫-E
,精確安裝依賴的版本,依賴信息將加入到dependencies
-
--no-save
:只添加依賴,依賴信息不寫入package.json
1.3 npm uninstall 卸載模塊
- 語法介紹:卸載指定的依賴
- 命令別名:
un
,unlink
,remove
,rm
,r
- 參數介紹:與
npm install
類似
1.4 npm update 更新模塊
- 語法介紹:更新指定的依賴
- 命令別名:
up
,upgrade
1.5 npm outdated 檢查模塊是否過時
語法介紹:檢查依賴是否已經過時,并列出所有已經過時的包
1.6 npm ls 查看安裝的模塊
- 語法介紹:列出安裝的所有依賴
- 命令別名:
list
,la
,ll
- 參數介紹:
-
--global
:簡寫-g
,查看全局安裝的依賴 -
--depth
:直接列出依賴會列出包括其子依賴,輸出太厄長了,使用--depth=0
控制,如下圖所示:
1.7 npm config 管理npm的配置路徑
- 語法介紹:所有
npm
配置參數可在官網查看(npm config)
-
npm config set <key> <value>
:或npm set <key> <value>
,設置或修改某項npm
配置。如通過npm config set proxy=***
設置代理來解決公司內網無法安裝npm
依賴,通過npm config set registry="https://registry.npm.taobao.org"
切換npm
倉庫源為淘寶鏡像來解決無法訪問npm
源或下載依賴慢的問題 -
npm config get <key>
:或npm get [<key>],查看某項npm
配置 -
npm config delete <key>
:刪除某項npm
配置 -
npm config list [--json]
:查看所有npm
配置 -
npm config edit
:用文本編輯器修改npm
配置
- 命令別名:
c
1.8 npm cache 管理模塊緩存
語法介紹:
-
npm cache add
:給一個指定的依賴包添加緩存(該命令主要是npm
內部使用) -
npm cache clean
:清除npm
本地緩存 -
npm cache verify
:驗證緩存數據的有效性和完整性,清理垃圾數據
1.9 npm version 查看 npm 版本
命令簡寫:npm -v
1.10 npm help 查看某條命令的詳細幫助
語法介紹:查看npm
或某條命令的詳細介紹,如npm help config
,則會在本地生成一個關于config命令使用的HTML文件并在瀏覽器打開
1.11 npm root 查看依賴包的安裝路徑
查看npm
全局依賴包路徑:npm root -g
1.12 npm run 執行腳本命令
npm run
命令可以自動新建一個shell去執行里面的腳本,關于npm
腳本相關的內容,在 npm總結(一)中已有介紹,本文就列舉一些常用的腳本命令:
-
npm run start
:簡寫npm start
,啟動模塊 -
npm run build
:生成環境打包部署 -
npm run test
:簡寫npm test
或npm t
,測試模塊 -
npm run stop
:簡寫npm stop
,停止模塊 -
npm run restart
:簡寫npm restart
,重啟模塊
1.13 npm 發布包相關命令
-
npm login
:同npm adduser
,登錄npm
社區賬號,如下圖所示:
-
npm publish
:發布npm
包
關于如何發布一個npm
包,可參考文章:從0開始發布一個無依賴、高質量的npm包
2. npm 安裝依賴過程中的錯誤解決
2.1 安裝時間長導致安裝失敗
由于國內防火墻原因,有時候下載npm
包特別慢,還經常下載失敗,可以嘗試以下方法來解決:
使用
cnpm
替代npm
,通過npm
安裝:npm install -g cnpm
,使用時將所有的npm
命令換為cnpm
即可使用
nrm
快速切換npm
倉庫源,通過npm
安裝:npm install -g nrm
,nrm
命令使用如下圖所示:
推薦方式:先使用nrm test
測試倉庫源的延遲,然后使用nrm use
命令選擇延遲最少的使用,nrm
的作用只是快速切換npm
倉庫源,所以使用時還是用npm
命令
2.2 其他未知問題
有時候會碰到一些莫名其妙的問題導致安裝依賴失敗,可嘗試升級node
版本,升級npm
版本,清除npm
緩存:npm cache clean --force
等方法來解決
3. Yarn
3.1 為什么使用 yarn
因為早期npm
有較多的問題,如安裝依賴的速度較慢,安裝的依賴版本也會不一致而引發一系列的問題,而yarn
正是為了彌補npm
的缺陷而出現的。正如官網介紹的其優點:
極其快速:
Yarn
會緩存它下載的每個包,所以無需重復下載。它還能并行化操作以最大化資源利用率,安裝速度之快前所未有特別安全:
Yarn
會在每個安裝包被執行前校驗其完整性超級可靠:
Yarn
使用格式詳盡而又簡潔的lockfile
文件 和確定性算法來安裝依賴,能夠保證在一個系統上的運行的安裝過程也會以同樣的方式運行在其他系統上
3.2 安裝
在windows
上安裝yarn
最簡單的方法就是使用npm
來安裝:npm install -g yarn
,其他方法可參見官網:安裝 | Yarn,下面主要介紹一下CentOS
系統上的安裝(安裝 | Yarn):
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install yarn
yarn --version
3.3 使用
yarn
的使用和npm
十分相似,大部分命令還是相同的,在官網從 npm 遷移中也列出了一些常用命令的比較,如下圖所示:
其他的yarn
命令的使用,在官網也有詳細的介紹:CLI 介紹 | Yarn
3.4 小結
關于yarn
的使用,本文不做詳細介紹,因為官網的文檔已經很清晰了,在理解了npm
的基礎上,快速閱讀下yarn
的文檔即可使用yarn
作為你的包管理工具。另外,關于package.json
文件中的字段解釋,在yarn
官網(package.json | Yarn)有很詳細的解釋,很值得去閱讀查閱。
那么使用了yarn
就可以完全替代npm
嗎,答案是肯定的,雖然官網文檔說兩者一起使用也是完全可以的,但還是盡量避免這樣做。至于選擇哪個包管理工具,完全由個人喜好而定,npm
也更新到6
版本了,作為競爭者,自然也不會比yarn
差到哪里去,所以選擇一個自己喜歡的工具使用就好。