我以为commonjs插件可以让您使用较旧的模块,但是我无法汇总使用https://www.npmjs.com/package/create-hmac。据我所知,这是一个较旧的模块,需要使用:
const createHmac = require("create-hmac");
我无法使用导入。有什么办法可以在汇总中使用此功能,还是我不走运?我正在使用标准的Svelte汇总模板,并尝试使用namedExports,dynamicRequireTargets,不同的Resolve设置等。如果任何真正了解汇总的人都可以帮助我,将不胜感激!
您实际上可以使用import
,这就是@rollup/plugin-commonjs
的用途。它允许您使用import
导出的require
模块。
import createHmac from 'create-hmac'
但是这就是该模块的全部功能。对你来说还不够。汇总无法自行解决node_modules
等问题。这不是标准的ES模块分辨率,而是节点特定的分辨率。因此,为此,您还需要@rollup/plugin-node-resolve
。
还不够。我已经尝试过create-hmac
软件包。它需要在Node环境中存在但在浏览器中不存在的事物(诸如流之类的事物……)。据我所知,Webpack会自动填充该内容,但不会自动填充。因此,您还需要一个插件。我尝试了rollup-plugin-node-builtins
。似乎可以工作。
因此,最后,您的汇总配置应如下所示:
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(),
]
}