Я использую свертку с плагинами 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