使用 rollup `require` 或 `import` CommonJS 节点模块

Fel*_* B. 5 javascript commonjs ecmascript-6 rollupjs

我不确定我是否应该使用该require版本或该import版本。它没有在文档中说明这一点,我在 Github 问题中发现了这样的声明:

绝对不鼓励混合 import 和 require。Rollup 处理 require 语句的唯一方法是使用 rollup-plugin-commonjs,但该插件将跳过任何带有 import 或 export 语句的文件。

这可以解释为:“您仍然需要使用require,否则 common-js 插件将忽略您的文件,并且事情将无法工作。” 或者“总是使用import其他一切都会构成混合”。所以这真的让我很困惑。

语境

我正在尝试将 CommonJS 库(Citation-js)导入到 javascript 模块中(实际上是打字稿,但我希望这与这里无关)。现在 common-js 的文档告诉我要做的

const Cite = require('common-js');
Run Code Online (Sandbox Code Playgroud)

这告诉我它是一个 commonjs 库(对吗?)。因此我添加了

import commonjs from "rollup-plugin-commonjs";
import { nodeResolve } from "@rollup/plugin-node-resolve";
Run Code Online (Sandbox Code Playgroud)

到我的汇总配置并放入plugins: [commonjs(), typescript(), nodeResolve()]配置中。

现在,vscode 不再强调所有内容,并使用 rollup 构建网站再次正常工作。但编译后的 JavaScript 只是声明,require('common-js')而我的浏览器抱怨require未定义。

Uncaught ReferenceError: require is not defined
Run Code Online (Sandbox Code Playgroud)

所以我尝试了

Uncaught ReferenceError: require is not defined
Run Code Online (Sandbox Code Playgroud)

反而。但这导致汇总构建失败

import Cite from 'common-js';
Run Code Online (Sandbox Code Playgroud)

现在我当然可以安装该插件了。但我不确定这是正确的,因为像 rollup 这样的工具的全部要点应该是依赖项的依赖项应该自动解决,对吧?

我也尝试过