扩展JavaScript的require语句

bvuwiixz  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(131)

在一个文件夹中,我有以下JavaScript文件main.js

const o = require("./other.js");
console.log(o.f());

以及以下JavaScript文件other.js

function f() { return 1.23; }
exports.f = f;

我需要一个不依赖于其他文件的等效文件,如以下JavaScript文件bundle.js

function f() { return 1.23; }
console.log(f());

我该怎么做呢?
我尝试使用Rollup Nodejs扩展,使用以下命令:

rollup main.js -o bundle.js -f cjs

但是,require语句仍保留在bundle.js文件中,如果我删除other.js,它将不再工作。

9q78igpj

9q78igpj1#

你是对的--你要找的是一个捆绑包,但是,Rollup需要特定的配置来适应你的用例;默认情况下,它不支持CommonJS导入(require),且如您所见,将保持它们原样。
如果您想使用Rollup,您可以通过创建一个配置文件来解决这个问题,该文件类似于:

import commonjs from '@rollup/plugin-commonjs';

export default {
  input: 'main.js',
  output: {
    dir: 'output',
    format: 'cjs'
  },
  plugins: [commonjs()]
};

并将其传递给rollup --config bla.js
您还可以使用不同的捆绑器,比如esbuild;运行npx esbuild main.js --bundle --outfile=out.js将完全满足您的需求,两者都使用有很多优点和缺点- esbuild非常快,但被认为比其他捆绑包不成熟。

相关问题