Yarn
Yarn
Features
Consistency: Yarn 允许使用某个lockfile 来保证团队中的所有人使用相同版本的npm 依赖包,这一点会大大减少因为某个人系统本身问题而导致的Bug 。Versatile Archives: Yarn 还允许用户将npm 包以tar.gz 形式打包上传到版本控制系统中,这一点能够利用NPM 包本身已经对不同版本的Node 或者操作系统做了容错这一特性。Offline: Yarn 允许离线安装某些依赖,这点对于CI 系统特别适用。CI 系统就不需要保证有稳定的网络连接,特别是在有墙的地方。Speed: Yarn 采用了新的算法来保证速度,比NPM 快到2~7 倍,同时也允许使用离线包的方式本地安装依赖。
Quick Start
直接使用 npm i yarn -g
全局安装即可,这是笔者本机的运行结果图,速度与稳定性确实都快了不少:
Cheat
NPM | YARN | 说明 |
---|---|---|
npm init | yarn init | 初始化某个项目 |
npm install/link | yarn install/link | 默认的安装依赖操作 |
npm install taco —save | yarn add taco | 安装某个依赖,并且默认保存到 |
npm uninstall taco —save | yarn remove taco | 移除某个依赖项目 |
npm install taco —save-dev | yarn add taco —dev | 安装某个开发时依赖项目 |
npm update taco —save | yarn upgrade taco | 更新某个依赖项目 |
npm install taco –global | yarn global add taco | 安装某个全局依赖项目 |
npm publish/login/logout | yarn publish/login/logout | 发布 |
npm run/test | yarn run/test | 运行某个命令 |
Yarn Workspaces
工作区是设置你的软件包体系结构的一种新方式,默认情况下从yarn install
便可将所有依赖包全部安装。
-
你的依赖包可以链接在一起,这意味着你的工作区可以相互依赖,同时始终使用最新的可用代码。这也是一个比
yarn link
更好的机制,因为它只影响你工作区的依赖树,而不会影响整个系统。 -
所有的项目依赖将被安装在一起,这样可以让
Yarn 来更好地优化它们。 -
Yarn 将使用一个单一的lock 文件,而不是每个项目多有一个,这意味着更少的冲突和更容易进行代码检查。
{
"private": true,
"workspaces": ["workspace-a", "workspace-b"]
}
请注意,private: true
是必需的!工作区本身不应当被发布出去,所以我们添加了这个安全措施以确保它不会被意外暴露。创建这个文件后,再创建两个名为 workspace-a
和 workspace-b
的子文件夹。在每个文件夹里面,创建一个具有以下内容的 package. json
文件:
- workspace-a/package.json:
{
"name": "workspace-a",
"version": "1.0.0",
"dependencies": {
"cross-env": "5.0.5"
}
}
- workspace-b/package.json:
{
"name": "workspace-b",
"version": "1.0.0",
"dependencies": {
"cross-env": "5.0.5",
"workspace-a": "1.0.0"
}
}
最后,在某个地方运行 yarn install
,当然最好是在工作区根目录里面。如果一切正常,你现在应该有一个类似这样的文件层次结构:
/package.json
/yarn.lock
/node_modules
/node_modules/cross-env
/node_modules/workspace-a -> /workspace-a
/workspace-a/package.json
/workspace-b/package.json
# 为某个子模块添加本地依赖
$ yarn workspace x add y@^1.0.0
# 在所有子项目下运行 Build 命令
$ yarn workspaces run build