模块化rollup.config时出现无法解析模块路径错误如何解决
报错原因
Rollup 配置文件默认由 Node.js 直接加载,默认仅识别 .js 后缀的 CommonJS 格式文件,你当前的导入存在两个问题:
- 导入路径未带文件后缀,Node.js 无法匹配到根目录的
.ts格式配置文件 - Node.js 原生不支持直接加载 TS 文件,也不会自动识别 TS 后缀
解决方案
方案1:改公共配置为JS格式(成本最低)
直接将根目录的 rollup.config.default.ts 改为 rollup.config.default.js,移除TS类型定义,用CommonJS规范导出:
// 根目录 rollup.config.default.js function createCommonJSConfig() { // 原有配置逻辑 } function createDeclarationConfig() { // 原有配置逻辑 } function createESMConfig(options) { // 原有配置逻辑 } module.exports = { createCommonJSConfig, createDeclarationConfig, createESMConfig }
子包的 rollup.config.js 改用CommonJS规范导入,补全文件后缀:
// 单个子包的rollup.config.js const { createCommonJSConfig, createDeclarationConfig, createESMConfig, } = require('../rollup.config.default.js'); module.exports = function () { return [ createDeclarationConfig(), createCommonJSConfig(), createESMConfig({ multiFileOutput: true }), ]; };
方案2:保留TS公共配置,新增Rollup配置加载插件
如果需要保留公共配置的TS类型能力,可以按以下步骤操作:
- 确保项目已安装
@rollup/plugin-typescript、typescript、tslib依赖 - 子包配置文件中导入路径补全
.ts后缀:
import { createCommonJSConfig, createDeclarationConfig, createESMConfig, } from '../rollup.config.default.ts';
- 执行rollup打包命令时增加参数,指定配置加载插件:
rollup --config rollup.config.js --configPlugin @rollup/plugin-typescript
方案3:全TS格式配置
直接把子包的 rollup.config.js 改为 rollup.config.ts,按TS语法导入根目录的TS配置,打包时同样添加上述--configPlugin参数即可,还能获得完整的配置类型提示。
monorepo场景优化建议
你可以把公共构建配置封装为内部workspace包,比如新建packages/rollup-config子包存放所有配置逻辑,各业务子包直接依赖该内部包导入使用,无需处理相对路径,更符合monorepo的依赖管理规范。
内容的提问来源于stack exchange,提问作者BennoDev
相关产品推荐
相关产品推荐

