Lerna Monorepo中TypeScript包导入路径配置问题:省略/lib后缀
解决Lerna Monorepo中TypeScript包导入路径简化问题
问题核心
当前@company/api包需要通过@company/api/lib导入,本质是包的入口配置与编译输出不匹配,或入口文件未正确对外导出内容。
分步解决
1. 确认编译输出文件
先检查api/lib目录:
- 源码入口是
src/index.ts,TypeScript编译后应生成lib/index.js(JS文件)和lib/index.d.ts(类型声明文件)。 - 如果没有这两个文件,执行编译命令(如
tsc)生成正确输出。
2. 修正package.json的入口配置
当前package.json里main和typings指向lib/api.js、lib/api.d.ts,但源码入口是index.ts,编译后不会生成api.js,需修改路径:
{ "name": "@company/api", "version": "0.0.1", // ...其他配置 "main": "lib/index.js", "typings": "lib/index.d.ts", // ...其他配置 }
3. 确保入口文件正确导出内容
检查src/index.ts,确认需要对外暴露的Component已导出:
// src/index.ts // 示例:从子模块导出Component export { Component } from './components/Component'; // 或直接定义并导出 export const Component = () => { /* 组件逻辑 */ };
4. 验证Lerna本地链接
在Lerna项目根目录执行命令,确保消费包能正确链接到@company/api:
lerna bootstrap
若使用npm workspace,执行:
npm install
5. 消费包TypeScript配置检查(可选)
如果消费包也是TypeScript项目,确保其tsconfig.json中:
moduleResolution设为node(默认值)skipLibCheck设为true,避免类型检查冲突
完成以上步骤后,消费包即可通过import { Component } from '@company/api';直接导入内容。
内容的提问来源于stack exchange,提问作者S S
相关产品推荐
相关产品推荐

