1.cnpm存在的問題
- 之前在npm更換成淘寶鏡像源以及cnpm文章中講到過患雇,cnpm安裝一個模塊,會出現(xiàn)2個文件夾,如果同時安裝很多模塊慢洋,會導致文件夾更多的問題。
- 之前在package-lock.json文章中講到過陆盘,npm安裝可以生成package-lock.json來固定版本普筹,cnpm不支持的問題。
所以隘马,我找到了一個包管理工具——yarn太防,既能避免npm下載速度過慢問題,又能避免上述cnpm存在的問題酸员,很好的滿足了我的需求蜒车。
2.包管理工具——yarn
FaceBook 開源的一個新的包管理器, 和npm的作用是一樣的幔嗦,但是解決了一些npm的痛點酿愧。如果上面所說的問題(cnpm文件夾過多、cnpm不支持lock文件)崭添,以及npm下載慢問題寓娩。還有其他優(yōu)點我就不一一介紹了叛氨,可以參[中文文檔](https://yarnpkg.com/zh-Hans/)呼渣。
3.yarn的安裝
- 安裝node
- 如果安裝了npm,可以使用
npm install -g yarn
安裝寞埠,如果沒有屁置,也可以去官網下載安裝包來安裝 - 安裝過后
yarn -v
可以查看是否安裝成功
4.yarn.lock文件
和package-lock.json文件幾乎一樣(包括作用、生成位置以及和package.json改動同步更新)仁连。
只有兩個區(qū)別:
- 生成方式(yarn:使用
yarn install
生成,且生成的是yarn.lock文件蓝角,npm:使用npm install
生成,且生成的是package-lock.json文件) - yarn.lock和package-lock.json格式不一樣。
我大致截個圖饭冬,可以看下yarn.lock格式:
5.yarn install安裝的目錄
使用yarn install安裝后的node_modules使鹅,和使用npm install安裝的node_modules基本一樣,并且不存在cnpm多個文件夾的情況昌抠,不過yarn會在node_modules中多了個.yarn-integrity文件患朱,里面記錄了依賴包的來源等。
6.yarn的常用命令
npm | yarn |
---|---|
npm init | yarn init |
npm install | yarn install |
npm install --no-package-lock | yarn install --no-package-lock |
npm install xxx --save | yarn add xxx |
npm install xxx --save-dev | yarn add xxx --dev |
npm uninstall xxx --save | yarn remove xxx |
yarn add xx@version | npm install xx@vision |
yarn upgrade xx | npm update xx |
yarn upgrade xx@version | npm update xx@vision |
yarn why xx | - |
yarn config list | npm config list |
注:
-
不能使用yarn install xx,會報類似這種錯
error
install
has been replaced withadd
to add new dependencies. Run "yarn add lodash" instead.` -
使用
yarn why xx
命令,可以查看xx模塊為什么會別安裝(即誰依賴的)炊苫。//測試moment模塊 $ yarn why moment //結果 yarn why v1.16.0 [1/4] Why do we have the module "moment"...? [2/4] Initialising dependency graph... [3/4] Finding dependency... [4/4] Calculating file sizes... => Found "moment@2.24.0" info Reasons this module exists - "antd" depends on it - Hoisted from "antd#moment" - Hoisted from "antd#rc-calendar#moment" - Hoisted from "antd#rc-time-picker#moment" Done in 0.41s.