将旧的 Require 模块与汇总一起使用

Using Older Require Module With Rollup

我认为 commonjs 插件可以让您使用旧模块,但我无法让 rollup 与 https://www.npmjs.com/package/create-hmac 一起使用。据我所知,这是一个较旧的模块,我需要使用:

const createHmac = require("create-hmac");

我无法使用导入。有什么方法可以将它与汇总一起使用,还是我运气不好?我正在使用标准的 Svelte rollup 模板并尝试使用 namedExports、dynamicRequireTargets、不同的 Resolve 设置等。如果真正了解 rollup 的人可以帮助我,我将不胜感激!!

实际上您可以使用 import,这就是 @rollup/plugin-commonjs 的用途。它允许您 import 使用 require.

导出的模块
import createHmac from 'create-hmac'

但这就是这个模块所做的一切。对你来说还不够。 Rollup 不会自行解析 node_modules 等。这不是标准的 ES 模块解析,它是 Node 特定的解析。因此,为此,您还需要 @rollup/plugin-node-resolve.

还是不够。我试过 create-hmac 包。它需要存在于 Node 环境中但不存在于浏览器中的东西(比如流......)。据我所知,Webpack 会自动填充它,但不会自动填充 Rollup。所以你还需要一个插件。我试过了rollup-plugin-node-builtins。似乎有效。

所以,最后,您的 Rollup 配置应该如下所示:

import resolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import builtins from 'rollup-plugin-node-builtins'

export default {
  // ...
  plugins: [
    // polyfills Node builtins in the browser
    builtins(),

    // Node resolution mechanism (node_modules)
    resolve({
      // this tells to use the 'browser' field of the packages you install
      // when they provide it (the package you've linked does)
      browser: true,
    }),

    // to allow import of module using require
    commonjs(),
  ]
}