Проблема: Я хочу создать пакетные файлы для веб-сайта для старых браузеров (> = IE10).
Мой перенесенный код выдает ошибки в старом Internet Explorer 11, когда я переносил код с помощью babel 7.x
с использованием babel-loader
, так как кажется, что node_modules
модули больше не будут переноситься по умолчанию?
Вопрос: Как я могу убедиться, что все мои node_module
модули будут перенесены, если они не были уже отправлены автором пакета?
webpack.config.js с использованием babel-loader
// webpack.config.js
rules: [
{
test: /\.(js|jsx)$/,
use: [
{
loader: 'babel-loader',
},
],
exclude: [],
},
],
Конфигурация babelrc.js с использованием babel 7.x
// .babelrc.js
module.exports = function(api) {
const presets = [
[
'@babel/preset-env',
{
useBuiltIns: 'usage',
ignoreBrowserslistConfig: true,
targets: {
node: 8,
browsers: [
'last 3 versions',
'> 1% in DE',
'Explorer >= 10',
],
},
},
],
'@babel/preset-react',
];
const plugins = [
// ...
];
return {
presets,
plugins,
};
};
Обновление 1:
Это была проблема с Бабелем. Моя конфигурация babel была названа .babel.rc
, а настройка babel 7 по умолчанию - искать файл конфигурации с именем babel.config.js
, см. здесь .
Таким образом, после переименования файла конфигурации babel из «.babel.rc» в «babel.config.js», я мог бы применить решение в моем «webpack.config.js», описанном здесь , для преобразования нетрансформированного Пакеты «node_modules» с таким решением:
// webpack.config.js
rules: [
{
test: /\.(js|jsx)$/,
use: [
{
loader: 'babel-loader',
},
],
// Exclude the untransformed packages from the exclude rule here
exclude: /node_modules\/(?!(MY_MODULE|ANOTHER-ONE)\/).*/,
},
],
Вопрос: Это похоже на обходной путь, но разве нет более удобного способа решения таких проблем? Я просто притворяюсь, что в ближайшем будущем будет все больше и больше нетрансформированных пакетов (после этого обсуждения ), и всегда ли мы должны вручную указывать имена пакетов для него в правиле exclude
веб-пакетов ??