使用具有汇总功能的旧版Require模块

问题描述 投票:0回答:1

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

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

我无法使用导入。有什么办法可以在汇总中使用此功能,还是我不走运?我正在使用标准的Svelte汇总模板,并尝试使用namedExports,dynamicRequireTargets,不同的Resolve设置等。如果任何真正了解汇总的人都可以帮助我,将不胜感激!

hmac svelte rollupjs
1个回答
3
投票

您实际上可以使用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(),
  ]
}
© www.soinside.com 2019 - 2024. All rights reserved.