Workspaces | Yarn 管理
Yarn 从 1.0 版开始支持 Workspace (工作区)。
Workspace 能更好的统一管理有多个项目的仓库,既可在每个项目下使用独立的 package.json 管理依赖,又可便利的享受一条 yarn 命令安装或者升级所有依赖等。更重要的是可以使多个项目共享同一个 node_modules 目录,提升开发效率和降低磁盘空间占用。好处不用多说了吧, 共用一个 node_modules.当然也有弊端,初次安装过于缓慢,跟随着项目的大小程度,可以采用 lerna (不做介绍,yarn 目前是最优选择,已踩坑,第三方依赖会存在冗余重复, yarn 更为清爽,感兴趣可以尝试) 构建。当然最好的方案还是结合使用,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 的命令大都可以直接使用
Q & A 地址
查看 demo2 并执行 yarn test
;
# 控制台会打印如下结果
我是 demo!