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表示工作空间
{
"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 的大多数命令都可直接使用