в том числе модуль IIFE в комплекте - PullRequest
0 голосов
/ 02 мая 2018

У меня проблемы с пониманием того, как связать модули iife с rollup.js. Модуль, который я пытаюсь загрузить, определен как ...

;(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 Ответ

0 голосов
/ 19 мая 2018

В commonjs namedExports вы должны использовать строку, которую вы используете для импорта, а не каталог файлов:

commonjs({
  include: [
    'node_modules/**',
  ],
  namedExports: {
    sax: ['default']
  }
}),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...