Inlcude Babel транспилирование только для необходимых Node_modules - PullRequest
1 голос
/ 24 апреля 2020

У меня есть следующая конфигурация для следующего js для обработки кода ES6 для IE11.

 module.exports = {
  poweredByHeader: false,
  distDir: "ssr_build",
  webpack(config) {
    config.node = { fs: "empty", net: "empty", tls: "empty" }
    config.plugins = config.plugins || []
    config.module.rules.push({
      test: /\.js$/,
      include: /node_modules/,
      use: {
        loader: "babel-loader",
        options: {
          presets: [
            [
              "next/babel",
              {
                targets: { ie: 11 },
              },
            ],
          ],
        },
      },
    })
    return config
  },
}

Мне было интересно, если у меня может быть условие для переноса node_modules модули только в том случае, если это ES6, и не требуется время, чтобы транспортировать ** все . Справка! **

Обновление 1.0:

Я уже нашел зависимости ES5, для которых требуется преобразование ES6, используя: https://github.com/obahareth/are-you-es5, создано регулярное выражение для исключения, не работает. Я попытаюсь еще раз проверить, отсутствуют ли зависимости от детей.

Я попробовал - https://github.com/martpie/next-transpile-modules, к сожалению, для этого требуется, чтобы все node_modules были вставлены вручную. Это кажется утомительным процессом, и остановил это.

1 Ответ

0 голосов
/ 24 апреля 2020

Я вижу, у вас есть 2 варианта:

Вариант 1 (лучше) - Исследуйте ваши зависимости. Большинство зависимостей переносятся в ES5 на этапе сборки, и тогда все в порядке. Вы можете проверить их dist папку (обычно) или просто посмотреть документы или вопросы.

Если вы обнаружите, что есть некоторые зависимости, которые переносятся в ES6, вы можете выборочно переносить только те зависимости, используя следующую . js плагин: https://github.com/martpie/next-transpile-modules

Вариант 2 - Если вы не знаете, какие модули node_modules на самом деле содержат код ES6, и вы не хотите тратить время выяснить зависимости вашего проекта:

Сконфигурируйте @ babel / preset-env с помощью файла конфигурации, как указано ниже, и продолжайте сканировать все ваши нод-модули. Этот загрузчик должен переносить только те части кода, которые необходимо перенести в зависимости от вашей целевой среды.

{
  "targets": {
    "ie": "11"
  }
}
...