npm 每次安装都会去服务器上拉一次,超级慢,虽然有 registry。
npm 没有指定版本锁定,如果开发者不遵循 semver 规则,会导致不同环境安装不同的版本,从而出现问题。
Advantage
完全代替,且有以下优势:
- Cache,更快
- Concurrency Download,更快
- Version Locked,一致性,安全
- 本地代理+缓存,这样,最少解决了速度问题,不需要每次安装都从服务器上去接,这样太慢,效率大大提升。
- 使用多线程去下载,更快。
- 更主要的是版本锁定,
yarn.lock
这样,就避免了因版本不一致而出现的各种问题。
开发环境的 global bin 迁移问题
nvm 虽然解决了 node 的版本问题,但每次升级都要对 global 的命令进行迁移,也是一件很烦的事情。
yarn 很好的解决了这个问题,在 macOS 上, yarn 的配置和文件目录被放置了在 ~/.config/yarn
下,global 的目录则对应在 ~/.config/yarn/global
,这样,就和 nvm 脱离了关系。每次升级不再有 global 迁移的苦恼。
package.json & yarn.lock
- package.json: 是 npm 的项目配置,包括依赖文件。
- yarn.lock: 存储着所有的依赖的版本(包括依赖的依赖)。
More:
- https://yarnpkg.com/en/docs/version-control
- https://yarnpkg.com/en/docs/dependencies
- https://yarnpkg.com/en/docs/configuration
使用技能
Install
1 | $ brew update |
一般都会用 nvm 来安装 node,这时 brew 就要特殊处理下:
1 | $ brew install yarn --ignore-dependencies |
Common
1 | $ yarn add |
Upgrade
1 | $ yarn upgrade-interactive |
Cache
可以直接把 cache 复制过去的,避免再次下载。
1 | $ yarn cache ls |
## - yarn config
配置国内源
配置 registry:
1 | $ yarn config set registry https://registry.npm.taobao.org |
测试
1 | $ yarn config get registry |
配置 node-sass
node-sass 每次都会从 github 上下载文件,然后 github 是用 amazon s3,这个是被墙掉的,所以这里也需要配置它的下载源到国内。
1 | $ yarn config set sass_binary_site http://npm.taobao.org/mirrors/node-sass -g |
测试
1 | $ yarn config get sass_binary_site |
## REF::