yarn workspaces下实现node_modules包嵌套文件省略dist路径导入的方法
配置调整方案
1. 修改包的package.json exports字段
你原来的exports配置只匹配了根路径的目录映射,要支持任意子路径导入需要使用通配符规则,调整后配置如下:
"exports": { "./*": { "types": "./dist/*.d.ts", "default": "./dist/*.js" }, "./package.json": "./package.json" }
该规则会自动把所有import xxx from '<package>/xxx'的路径,映射到包内dist/xxx.js位置,同时单独指定types路径保证TypeScript能正确找到对应的类型声明文件。
2. 调整依赖项目的TypeScript配置
如果引入该包的项目是TypeScript项目,需要在其tsconfig.json中开启对package.json exports字段的支持,修改compilerOptions如下:
{ "compilerOptions": { "moduleResolution": "bundler", // 也可填 node16 / nodenext,根据你的项目运行环境选择 // 其余原有配置保持不变 } }
旧版的moduleResolution: node(对应Node.js 10及更早版本的模块解析规则)不支持exports字段,会导致路径解析报错。
可选:Monorepo开发环境优化
如果你是在yarn workspaces monorepo内做本地开发,可以在根目录或者依赖项目的tsconfig中添加路径映射,开发阶段不需要每次构建包就能直接解析到源文件,实时同步类型:
{ "compilerOptions": { "paths": { "<package>/*": ["../<对应包的目录>/src/*"] } } }
你原有的包tsconfig配置不需要修改,已满足构建输出到dist目录、生成类型声明的要求。
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

