Почему мы исключаем node_modules при использовании babel-loader? - PullRequest
0 голосов
/ 12 января 2019

Большая часть вопросов, задаваемых на сайте, состоит в том, как исключить node_modules, но вместо этого мне интересно, почему мы хотим исключить node_modules?

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'app.bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
        options: {
          presets: ['@babel/preset-env']
        }
      }
    ]
  }
};

Может кто-нибудь объяснить мне причину исключения node_modules?

1 Ответ

0 голосов
/ 12 января 2019

Короче говоря, транспиляция - это дорогостоящий процесс, и во многих проектах тысячи (если не сотни тысяч) строк кода, импортированных в этот babel, должны быть переброшены. Ваши node_modules уже должны быть запущены без переноса, как уже было сказано, и есть простые способы исключить ваши node_modules, но перенести любой код, который в этом нуждается. Смотри https://github.com/babel/babel-loader/issues/171.

Я видел много споров о том, должен ли разработчик использовать работу приложений для переноса библиотеки или ответственность разработчика библиотеки. Большая часть времени выполняется для поддержки браузеров, и создатель библиотеки не знает, какие браузеры вам нужно поддерживать, поэтому они в конечном итоге либо переносятся, либо не переносятся, оставляя это в ваших руках. Если они переносятся в ES5, то вы - золотой, если нет - обычно это достаточно простая задача, чтобы выяснить, какие библиотеки вызывают проблемы, и перенести их самостоятельно

...