Определение нескольких предустановленных настроек babel в конфигурации webpack - PullRequest
1 голос
/ 11 апреля 2019

Я создал файл webpack.config.js, который экспортирует два разных объекта конфигурации WebPack. Мне нужно настроить различные параметры Babel для пресетов в этих. После небольшого исследования я попытался создать две разные конфигурации загрузчика, каждый из которых передавал бы предустановки по-разному targets, например:

// default JS loader config for browsers that support <script type='module'
{
    loader:'babel-loader',
    options:{
        presets: ['@babel/preset-env', {
            targets: {
                esmodules: true
            }
        }]
    }
}
...


// fallback for browsers that load the <script nomodule 
{
    loader:'babel-loader',
    options:{
        presets: ['@babel/preset-env', {
            targets: "> 0.5% in UK, last 2 versions, not dead, ie 11"
        }]
    }
}

Однако я явно ошибаюсь, потому что я получаю эту ошибку при сборке WebPack

ERROR in ./some-path/WorkflowStage.class.js
    Module build failed (from ./node_modules/babel-loader/lib/index.js):
    ReferenceError: [BABEL] e:\some-path\WorkflowStage.class.js: Unknown option: .targets. Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.

Мой главный вопрос: как передать целевой параметр в @babel/preset-env из моего файла webpack.config.js? (Который я считаю моей идеальной установкой для этого проекта).

Если это невозможно, как мне настроить WebPack / babel, чтобы при одном запуске WebPack создавались два разных выходных файла с двумя разными конфигурациями babel?

1 Ответ

1 голос
/ 11 апреля 2019

Обычно параметры вашего загрузчика должны выглядеть как JS-кодированные .babelrc. Каждый пресет с опциями должен быть в своем собственном массиве.

Итак, замените

{
  loader: 'babel-loader',
  options: {
    presets: [
      // defines the @babel/preset-env as the first preset
      '@babel/preset-env',
      // defines an invalid object as a preset (throws error)
      { targets: { esmodules: true } }
    ]
  }
}

с

{
  loader: 'babel-loader',
  options: {
    presets: [

      // defines a preset with options
      [
        '@babel/preset-env', {
          targets: {
            esmodules: true
          }
        }
      ]

    ]
  }
}
...