在使用 {"dependencies": {"my-component-library-b": "workspace:^"}}
方式引用组件库 B 时,由于 B 包是作为工作区的一部分,因此在这种情况下,你不需要将 B 包预先打包成库文件(如UMD、CommonJS或ES模块格式)。
Yarn Workspaces 可以直接解析和链接工作区内的依赖。
这意味着,业务包 A 可以直接引用组件库包 B 的源代码,而非编译后的库文件。这样做的好处是可以享受到工作区带来的开发便利性,比如实时的热更新、共享依赖等。
然而,当业务包 A 需要发布到生产环境时,你需要确保组件库 B 已经被打包并准备好分发(例如通过npm publish发布到私有或公共npm仓库)。
此时,在发布版的业务包 A 的 package.json 中,应将对组件库 B 的引用改为发布的包名和版本号,而非 "workspace:" 引用。
在开发阶段,可以这样引用:
// packages/A/package.json
{
"dependencies": {
"my-component-library-b": "workspace:^"
}
}
而在发布阶段,需要将依赖更改为:
// packages/A/package.json(发布版)
{
"dependencies": {
"my-component-library-b": "^x.y.z"
}
}
其中 ^x.y.z
是组件库 B 发布到npm仓库后的版本号。