gpt4 book ai didi

javascript - 使用 Rollup 仅转换为 CommonJS,而不进行捆绑

转载 作者:行者123 更新时间:2023-12-01 02:03:10 26 4
gpt4 key购买 nike

解决下面列出的这个问题的最佳方法是什么?

...或者我应该使用 Rollup 以外的其他工具来完成此任务吗?

...

假设我正在开发一个库 foo,它公开两个 es6 模块 a.jsb.js (即允许 import a from foo/aimport 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com