Использование свертки в сочетании с плагинами babel и commonjs не разрешает все модули

Я использую свертку с плагинами 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 работают правильно, но компоненты класса вызывают проблему. Итак, моя гипотеза состоит в том, что преобразование Babel для классов ES6 каким-то образом сбивает с толку плагин CommonJS.

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


person arendjr    schedule 18.01.2019    source источник