Подтвердить что ты не робот

Загрузчики веб-пакетов и включают

Я новичок в webpack, и я пытаюсь понять загрузчики, а также его свойства, такие как test, loader, include и т.д.

Вот пример фрагмента webpack.config.js, который я нашел в google.

module: {
    loaders: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [
          path.resolve(__dirname, 'index.js'),
          path.resolve(__dirname, 'config.js'),
          path.resolve(__dirname, 'lib'),
          path.resolve(__dirname, 'app'),
          path.resolve(__dirname, 'src')
        ],
        exclude: [
          path.resolve(__dirname, 'test', 'test.build.js')
        ],
        cacheDirectory: true,
        query: {
          presets: ['es2015']
        }
      },
    ]
}
  • Я прав, что тест:/.js$/будет использоваться только для файлов с расширением .js?

  • Погрузчик: 'babel-loader', это загрузчик, который мы устанавливаем с помощью npm

  • Включить: у меня есть много вопросов по этому поводу. Правильно ли, что все, что мы помещаем внутри массива, будет переполнено? Это означает, что index.js, config.js и все *.js файлы в lib, app и src будут переданы.

  • Другие вопросы по включению: Когда файлы передаются, файлы *.js объединяются в один большой файл?

  • Я думаю, что исключение самоочевидно. Это не будет передано.

  • Что делает запрос: {presets: ['es2015']} do?

4b9b3361

Ответ 1

В конфигурации webpack для конфигурации есть несколько вещей, важными являются

  • entry - может быть массив или объект, определяющий точку входа для объекта, который вы хотите расслоить, может быть js, поскольку здесь сказано, что это делается только для /.js$. Ваше приложение, если имеет несколько точек входа, использует массив.
  • include - определяет набор путей или файлов, в которых импортируемые файлы будут преобразованы загрузчиком.
  • exclude является самоочевидным (не преобразовывайте файл из этих мест).
  • output - окончательный пакет, который вы хотите создать. если вы укажете, например,

    вывод: { filename: "[name].bundle.js", поставщик: "реагировать" }

    Затем ваши файлы приложения js будут связаны как main.bundle.js и будут реагировать в файлах vendor.js. Это ошибка, если вы не используете обе страницы html.

Надеюсь, что это помогло

Ответ 2

Эта документация помогла мне лучше понять. Похоже, что это для webpack 1, но по-прежнему применяется.

https://webpack.github.io/docs/configuration.html#module-loaders

Погрузчики

Массив автоматически применяемых загрузчиков.

Каждый элемент может иметь следующие свойства:

  • test: Условие, которое должно быть выполнено
  • исключить: Условие, которое не должно выполняться
  • include: Массив путей или файлов, в которых импортированные файлы будут преобразованы загрузчиком
  • загрузчик: Строка "!" раздельные погрузчики
  • загрузчики: Массив загрузчиков как строка

Этот пример помог мне понять, что происходит. Похоже, вы используете либо включить, либо исключить, но не оба. Тест - это условие, применяемое ко всем файлам. Поэтому, если вы включаете папку, каждый файл должен пройти тестовое условие. Я не проверял это, но, основываясь на примере, представленном документацией, похоже, что так оно и работает.

    module: {

      rules: [
        {
          // "test" is commonly used to match the file extension
          test: /\.jsx$/,

          // "include" is commonly used to match the directories
          include: [
            path.resolve(__dirname, "app/src"),
            path.resolve(__dirname, "app/test")
          ],
          // "exclude" should be used to exclude exceptions
          // try to prefer "include" when possible

          // the "loader"
          loader: "babel-loader" // or "babel" because webpack adds the '-loader' automatically
        }
      ]

    }

Ответ 3

1) Правильно.

2) Правильно.

3) Правильно.

4) Я не уверен. Мой файл webpack.config.js включает в себя выходной ключ и объединяет его в один файл:

output: {
    path: path.resolve(__dirname, 'build'),
    filename: 'bundle.js'
}

5) Правильно.

6) Это говорит babel-загрузчику, какой вид трансляции вы хотите выполнить, а также другие параметры компиляции. Так, например, если вы хотите, чтобы он также переместил jsx, а также результаты кэша для повышения производительности, вы изменили бы его на:

query: {
    presets: ['react', 'es2015'],
    cacheDirectory: true
}