@Bluorenge
Junior front-end developer

Как транспилировать через babel код библиотеки из node_modules?

Подключаю библиотеку через import. В продакшен бандл попадает её код содержащий es6 фичи.
Так как обычно в вебпак прописывается правило `exclude: /node_modules/`, то подключенные оттуда библиотеки не прогоняются через бейбл. Хотя обычно создатели библиотек сами прогоняют код через бейбл и отдают в продакшен имеено такую версию, иногда бывает, что их настройки отличаются от тех, которые нужны.

Как добавить исключение, чтобы и код из node_modules обрабатывался через мои настройки babel?
  • Вопрос задан
  • 232 просмотра
Решения вопроса 1
@Bluorenge Автор вопроса
Junior front-end developer
Здесь много ответов на этот вопрос
Мне больше всего понравилось такое решение:
function excludeNodeModulesExcept(modules) {
  var pathSep = path.sep
  if (pathSep == '\\')
    pathSep = '\\\\'
  var moduleRegExps = modules.map(function (modName) {
    return new RegExp('node_modules' + pathSep + modName)
  })

  return function (modulePath) {
    if (/node_modules/.test(modulePath)) {
      for (var i = 0; i < moduleRegExps.length; i++)
        if (moduleRegExps[i].test(modulePath)) return false
      return true
    }
    return false
  }
}

А потом в правилах:
rules: [
      {
        test: /\.js$/,
        // Сюда передаём название нужного модуля.
        exclude: excludeNodeModulesExcept(['your_module']),
        use: {
          loader: `babel-loader`,
        },
      },
]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы