Skip to main content

yarn-workspaces工作区

Yarn从1.0版本开始支持Workspace(工作区) Workspace能更好的的统一管理有多个项目的仓库,即可在每个项目下使用独立的package.json管理依赖,又可遍历的享受一条yarn命令安装或升级所有依赖等。更重要的是可以多个项目共享同一个node_modules目录,提升开发效率和降低磁盘空间占用。但是也存在一定的弊端,初次安装过于缓慢,随着项目的大小程度,可以采用lerna构建,当然最好的方案还是结合使用。lerna更新后也支持Workspace,结合使用效果更佳。

提醒

由于 yarn 1.x 已经停止维护了,可以参阅 npm workspaces

根目录配置

  • private不作为根目录,最好是true
    • 当组件库开发完毕,要发布到NPM。工作区的根目录一般是脚手架,不需要发布,private是为了防止意外吧内容暴露出去。
  • workspaces表示工作空间
    • 一个数组,存储要管理的所有包的路径(也可以成为工作区Workspace),支持Glob统配符
    • 注意:由于使用通配符,使用./packages/*将会有问题,详细参考Dots
{
"name": "@blog/example",
"private": true,
"version": "1.0.0",
"workspaces": [
"packages/*"
]
}

同一个Workspace相互引用安装

安装根目录

  • -D:作为开发依赖安装
  • -W:--ignore-workspace-root-check表示安装到工作区的根目录
yarn add [package_name] -D -W
yarn remove [package_name] -W

安装dependencies

yarn workspace [package_name] add [package_name]@[version]

安装devDependencies

yarn workspace [package_name] add -D [package_name]@[version]

删除包

删除相关也是类似的不用制定版本

yarn workspace [package_name] remove [package_name]

查看信息

yarn workspaces info --json

启动

yarn workspaces:表示每个项目下执行:

yarn workspaces run test
yarn workspaces vx.x.x
{ "create-subscription": {
"location": "packages/create-subscription",
"workspaceDependencies": [],
"mismatchedWorkspaceDependencies": []
},
...
"react-noop-renderer": {
"location": "packages/react-noop-renderer",
"workspaceDependencies": [
"react-reconciler"
],
"mismatchedWorkspaceDependencies": []
},
"react-reconciler": {
"location": "packages/react-reconciler",
"workspaceDependencies": [],
"mismatchedWorkspaceDependencies": []
}, ... }

其他

yarn 的大多数命令都可直接使用

参考链接

Workspaces

Workspaces in Yarn

Workspaces

Yarn workspaces - 皮蛋很白