Использование накопительного пакета в сочетании с плагинами babel и commonjs не разрешает все модули - PullRequest
0 голосов
/ 18 января 2019

Я использую свертку с плагинами Babel и CommonJS, например:

    const inputOptions = {
        input: "...",
        plugins: [
            resolve(),
            babel({
                exclude: "node_modules/**",
                externalHelpers: true,
                include: "**/components/**/*.js",
            }),
            commonjs(),
        ],
    };

Но что происходит, так это то, что модули, на которые ссылаются компоненты, похоже, не распознаются плагином CommonJS, они заканчиваются как простые require(...) операторы в выходных данных (так же, как исходные данные), где, конечно, они не могут быть разрешены , Модули, импортированные (также через операторы require()) модулями вне каталога компонентов, правильно подобраны и включены в комплект.

Я пытался переместить плагин babel вверх (перед плагином разрешения), но это не дало эффекта. Я также попытался сдвинуть его вниз, но затем Rollup захлебнулся JSX в компонентах.

Я также попытался удалить опцию include, чтобы все файлы проходили через Babel, и в результате не было выбрано ни одного модуля, кроме точки входа, так что действительно похоже, что плагины Babel и CommonJS не воспроизводятся. хорошо, хотя я с трудом могу себе представить, что я единственный, кто настроен подобным образом. Я что-то упустил?

Обновление : Еще одна вещь, которую я заметил, это то, что файлы, для которых require () не распознаются, также не экспортируются должным образом. Вместо этого для каждого компонента, который выходит из строя, я вижу это в выходном комплекте:

module.exports = ComponentName;

var componentName = /*#__PURE__*/Object.freeze({

});

Строка module.exports взята из источника, но этот оператор Object.freeze() является чем-то, что добавляет накопительный пакет, возможно, потому что он не видит экспорт по умолчанию?

Чтобы добавить некоторую дополнительную путаницу: на самом деле есть один компонент, который передается Babel и для которого работает разрешение модуля, а функция require () заменяется, как и следовало ожидать, но все компоненты, включенные в этот компонент, по очереди иметь дефектное поведение, описанное выше.

Обновление 2 : я смог воспроизвести проблему и в минимальном примере, и это позволило мне точно определить, почему все работает для одного компонента, а не для компонентов, которые он включает в свою очередь , Очевидно, что функциональные компоненты React работают правильно, но компоненты класса вызывают проблему. Итак, теперь моя гипотеза состоит в том, что преобразование Бабеля для классов ES6 каким-то образом сбивает с толку плагин CommonJS.

Обновление 3 : поскольку я считаю, что это ошибка, я также создал проблемы с соответствующими проектами: https://github.com/rollup/rollup-plugin-babel/issues/297 и https://github.com/rollup/rollup-plugin-commonjs/issues/369

...