展示示例,就着示例开始说事儿
root-project
|- packages
| |- packageA
| | - package.json
| |- packageB
| | - package.json
|- package.json
{
"name": "root-project",
"private": "true",
"workspaces": [
"packages/packageA",
"packages/packageB"
],
"dependencies": {
"lodash": "1.0.0"
}
}
{
"name": "a-project",
"dependencies": {
"lodash": "1.0.0",
"antd": "1.2.3"
}
}
{
"name": "b-project",
"dependencies": {
"kk": "1.0.0",
"antd": "1.2.3"
}
}
node_modules
|- lodash@1.0.0
|- kk@1.0.0
|- antd@1.2.3
|- a-project
|- b-project
package.json中workspaces的作用和表现
- 当 package.json 文件中定义 workspaces 时,当前所在目录会被当作 project root。默认情况下 project root 不安装依赖包,在根目录下执行
yarn add packageName会报错,如需在根目录安装则需用 yarn add packageName -W
- 将 workspaces 数组中的子包建立一个虚拟的link包,在root project中可以当作正常安装的依赖包直接import子包
import * as pA from packageA | import pA from packageA,怎么 import 取决于你是怎么export的(这是es6的知识)
- 将 workspaces 数组中的子包的依赖安装,提升到 root project 的依赖同层级