将旧的 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(),
]
}
我认为 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(),
]
}