将IIFE模块包含在捆绑包中

4

我遇到了一个问题,不知道如何使用rollup.js打包iife模块。 我试图加载的模块定义如下...

;(function (sax) {
    sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }
    sax.SAXParser = SAXParser
    sax.SAXStream = SAXStream
    sax.createStream = createStream
    [...]
})(typeof exports === 'undefined' ? this.sax = {} : exports)

这是我的rollup.config.js文件:
import commonjs from 'rollup-plugin-commonjs';
import nodeResolve from 'rollup-plugin-node-resolve';
import globals from 'rollup-plugin-node-globals';
import babel from 'rollup-plugin-babel';

export default {
  input: 'index.js',
  output: {
    file: 'build/foo.js',
    format: 'umd',
    name: 'foo'
  },
  moduleContext: {
    'node_modules/sax/lib/sax.js': 'window'
  },
  plugins: [
    globals(),
    nodeResolve({
      jsnext: true,
      main: true
    }),

    commonjs({
      include: [
        'node_modules/**',
      ],
      namedExports: {
        'node_modules/sax/lib/sax.js': 'default'
      },
      ignore: [ 'conditional-runtime-dependency' ]
    }),

    babel({
      exclude: 'node_modules/**'
    }),
  ]
};

我的代码正在使用以下方式导入依赖...
import sax from "sax";

但是使用rollup -c命令失败了,出现以下错误信息:
[!] Error: 'default' is not exported by node_modules/sax/lib/sax.js

有什么想法可以解决这个问题吗?

1
你最终解决了这个问题吗? - Brandon Boone
1个回答

0
在CommonJS的namedExports中,您必须使用导入时使用的字符串,而不是文件目录:
commonjs({
  include: [
    'node_modules/**',
  ],
  namedExports: {
    sax: ['default']
  }
}),

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接