Yarn Workspace 基础
使用 Yarn Workspace 的原因
多项目,需要共享代码
基础目录
test
packages
a
index.js
package.json
b
index.js
package.json
package.json
创建工作区
npm init -w packages/a -y
npm init -w packages/b -y
// 或者合并为一条
npm init -w packages/a -w packages/b -y
根目录 package.json
{
"name": "test",
"private": true,
"workspaces": ["packages/*"]
}
工作区 package.json
{
"name": "@test/a", // 命名规则 @[root-name]/[package-name]
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
packages/a/index.js
const { b } = require('@test/b')
console.log('a', b())
packages/b/index.js
exports.b = () => {
return 'value:b;'
}
console.log('b');
关联
在根目录或工作区执行 yarn 指令,即可将本地模块软链接到根目录的 node_modules
共享依赖
// 根 package.json 增加 devDependencies
{
"name": "test",
"private": true,
"workspaces": ["packages/*"],
"devDependencies": {
"react": "^18.1.0"
}
}
// 工作区 package.json 增加 peerDependencies
{
"name": "@test/a",
"version": "1.0.0",
"main": "index.js",
"peerDependencies": {
"react": "*"
}
}