yarn link链接本地包后无法通过正确包名导入如何解决
问题原因
执行yarn link ../libA/dist时,yarn会将传入路径指向的文件夹作为链接包的根目录,软链对应的包名默认取目标文件夹的名称dist,因此node_modules下只会生成dist目录,无法通过libA作为包名导入。
正确配置步骤
- 首先修正libA根目录下的
package.json配置:- 确保
name字段值为"libA",和你期望的导入包名完全一致 - 配置入口字段指向编译后的dist产物:CommonJS场景配置
main字段,ESM场景可补充module字段,TS项目额外配置types字段指向生成的类型声明文件,参考配置:
{ "name": "libA", "version": "1.0.0", "main": "dist/index.js", "types": "dist/index.d.ts" // 其余原有配置(scripts、依赖项等)保持不变 } - 确保
- 清理之前错误生成的链接,在projectA根目录执行命令:
yarn unlink dist - 选择以下任意一种方式完成link即可:
- 方式一(全局注册,适合多项目同时调试本地libA):
- 进入libA根目录执行
yarn link,这一步yarn会读取当前目录package.json的name字段,将libA注册到全局本地链接仓库 - 切回projectA根目录执行
yarn link libA,此时node_modules下会生成名为libA的软链,指向本地libA根目录,Node及构建工具会自动读取package.json的入口配置,找到dist下的编译产物
- 进入libA根目录执行
- 方式二(直连,无需全局注册,适合单项目快速调试):
直接在projectA根目录执行命令,注意路径指向libA根目录,不要进到dist层级:yarn link ../libA
- 方式一(全局注册,适合多项目同时调试本地libA):
配置完成后即可直接通过import {ExportedName} from "libA"完成模块导入。
内容的提问来源于stack exchange,提问作者cjds
相关产品推荐
相关产品推荐

