Несколько дней новогоднего волшебства:
Успейте начать обучение в 2018-ом году со скидкой до 30%!
Выбрать курс

Webpack: настраиваем сборку приложения

JS_Deep_6.08_Site.png

Webpack – один из самых быстрых, мощных и гибких сборщиков. На сегодняшний день он обладает также уникальными возможностями. Сравнительно недавно вышла новая версия Webpack и в этой заметке я поделюсь с вами тем, как настроить сборку вашего приложения, а также расскажу про некоторые возможности Webpack.

И чтобы собрать проект, как и любому другому уважающему себя сборщику, Webpack также необходим файл конфигурации:

module.exports = {
  mode: "production",
  entry: "./app/entry",
  output: {
    path: "./dist",
    filename: "bundle.js"
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        loader: "babel-loader",
        options: {
          presets: ["es2015"]
        }
      }
    ]
  },
  resolve: {
    modules: [
      "node_modules",
      "./app"
    ],
    extensions: [".js", ".json", ".jsx", ".css"],
  },
  devServer: {
    proxy: {
      '/api': 'http://localhost:3000'
    }
  },
  plugins: [
    new HtmlWebpackPlugin()
  ]
}

Разберёмся:

Всё-таки мы в NodeJS окружении и так пишется export.

module.exports = {

Режим, в котором webpack собирает ваше приложение:

  mode: "production",

В зависимости от него включаются или выключаются различные features, например, минификация. Точка входа для сборки, обычно это index.js клиентской части:

  entry: "./app/index.js",

Собственно, результат работы webpack:

  output: {
    path: "./dist",
    filename: "bundle.js"
  },

Туда будет складываться, так называемый бандл (bundle) – результат объединения всех связанных JS, начиная с точки входа.

Помимо JS, туда будут генерироваться HTML и другие файлы, генерируемые плагинами.

Есть секция, где настраивается сам модуль – та часть приложения, которая собирается Webpack:

  module: {

В этой секции настраиваются правила обработки файлов и import-ов.

    rules: [

Webpack позволяет импортировать не только js-файлы, но и написанные на диалектах TypeScript, JSX, и даже позволяет импортировать картинки!

Вот как раз пример настройки loader-а – обработчика import-ов:

      {
        test: /\.jsx?$/,
        loader: "babel-loader",
        options: {
          presets: ["es2015"]
        }
      }

К файлам с данным расширением будет применяться babel-loader (babel) с набором плагинов (уже babel-а), называемых preset-ом, предназначенных для транспайлинга ES2015.

В данной секции вы можете указать, где будут находиться родительские папки импортируемых вами файлов:

  resolve: {
    modules: [
      "node_modules",
      "./app"
    ],
    extensions: [".js", ".json", ".jsx", ".css"],
  },

Одна из прекрасных возможностей Webpack – дев-сервер в режиме проксирования:

  devServer: {
    proxy: {
      '/api': 'http://localhost:3000'
    }
  }

Если вы разрабатываете UI для сложного backend-а, то здесь вы можете указать адрес сервера и все запросы от вашего UI будут проксироваться на этот сервер!

Есть вопросы? Напишите в комментариях!

Автор
1 комментарий
0

неплохо было бы накидать полезных ссылок, где глубже стоит копнуть. (понятно, что у каждого свои полезные ссылки, но тут речь о том, что считает автор статьи полезными ссылками))

Для комментирования необходимо авторизоваться