解决下面列出的这个问题的最佳方法是什么?
...或者我应该使用 Rollup 以外的其他工具来完成此任务吗?
...
假设我正在开发一个库 foo,它公开两个 es6 模块 a.js
和b.js
(即允许 import a from foo/a
和 import b from foo/b
)
源 es6 模块
// src/a.js
export default function a(x) { return x+'!' }
...
// src/b.js
import a from './a.js'
export default function b() { return a('Hi') }
然后我想将 a.js 和 b.js 转换为 CommonJs 模块并将它们保存在项目的根文件夹中。所以我想要这条线 import a from './a'
只变成了const a = require('./a')
并跳过任何捆绑。就像这样:
所需的 CommonJS 输出
// a.js
module.exports = function a(x) { return x+'!' }
...
// b.js
const a = require('./a')
module.exports = function b() { return a('Hi') }
我的第一直觉是使用类似 external: (id) => id!==currentFile
的东西,在 rollup.config.js 中将所有同级模块定义为外部模块。这几乎可以工作,但会导致相对导入路径被重写为 const a = require('./src/a')
(从 a.js
文件夹导入 src
的 es6 版本)。
实际结果
// a.js
module.exports = function a(x) { return x+'!' }
...
// b.js
const a = require('./src/a')
module.exports = function b() { return a('Hi') }
最佳答案
你可以使用这个:
// rollup.config.js
export default {
input: ['src/a.js', 'src/b.js'],
output: {
dir: '.',
format: 'cjs'
},
experimentalCodeSplitting: true,
}
关于javascript - 使用 Rollup 仅转换为 CommonJS,而不进行捆绑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50365177/