Yarn workspace 是 Yarn 提供的 monorepo 下,管理依赖的机制。对代码仓库下,多个 package 的依赖,进行管理:将共同的依赖,做 hosting(提升)。这样,可以防止 package 中的包重复安装。
workspace 机制,会在根目录下,统一安装依赖到 node_module,并生成 yarn.lock。单个 package 下,不需要再生成 yarn.lock。
yarn config set workspaces-experimental true
命令的含义:添加workspaces-experimental true
到系统全局的.yarnrc
中。
2.修改根目录的 package.json,添加如下内容:
{
"private": true,
...
"workspaces": ["packages/*"]
}
配置项含义:
private - 禁止发布根目录内容
workspaces - 设置工作区,声明 workspace 中 package 的路径。值是一个字符串数组,支持 Glob 通配符。
Lerna 安装依赖的方式,是使用命令lerna bootstrap
。
该命令的作用,是 cd 到 package 文件夹下的每个子文件夹,运行npm install
或yarn install
,在子文件夹中生成版本lock文件
和node_module
,单独对依赖进行管理。
{
...
"npmClient": "yarn",
"useWorkspaces": true
}
{
"private": true,
...
"workspaces": ["packages/*"]
}
Yarn 负责管理依赖,workspace 会自动对 package 的引用 ,设置软链接(symlink),并且软链接仅在当前 workspace 中生效。
Lerna 负责版本的发布工作,对 package 相互之间的依赖,做好版本管理。
lerna bootstrap
dependencies
依赖 yarn add -W [pkg]
devDependencies
依赖 yarn add -D -W [pkg]
-W
的含义: 安装依赖到 workspace-D
的含义: 安装依赖到devDependencies
最近笔者在整理第一本电子书书稿《前端面试手册》,有兴趣的同学可以关注下~
喜欢我文章的朋友,可以通过以下方式关注我: