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

Здравствуйте. Учусь вебпаку. Есть несколько entry файлов и библиотеки, некоторые подключаются только на одной странице, а другие на нескольких страницах. Хочется максимально рационально все подключить: каждая страница подключает свой скрипт (index.html с index.js, about.html с about.js и тд), библиотеки, подключаемые на каждой странице (например jquery), объединить в vendor.js или что-то подобное и библиотеки, подключаемые индивидуально (например moment), оставить в отдельных файлах (либо совсем по умному - создать файлы с библиотеками, используемые только в паре).
const webpack =  require("webpack");
const fs = require("fs");
const HtmlWebpackPlugin = require("html-webpack-plugin");

const PAGES_DIR = `${PATHS.src}/html`;
const PAGES = fs.readdirSync(PAGES_DIR);

module.exports = {
  entry: {
    a: "./src/js/a.js",
    b: "./src/js/b.js",
    c: "./src/js/c.js"
  },
  output: {
    filename: "./assets/js/[name].[hash].js",
    path: "./dist",
    publicPath: "/"
  },
  optimization: {
    runtimeChunk: "single",
    splitChunks: {
      chunks: "all",
      cacheGroups: {
        vendor: {
          test: /[\\/]node_modules[\\/]/,
          name: "vendors",
          filename: `./assets/js/[name].[hash].js`,
          chunks: 'all'
        }
      },
    },
  },
  module: {
    rules: [
      // все загрузчики
    ]
  },
  plugins: {
    // вспомогательные плагины
    new webpack.providePlugin({
      $: "jquery",
      jQuery: "jquery",
      "window.jQuery": "jquery",
    }),
    ...PAGES.map(page => new HtmlWebpackPlugin({
      template: `${PAGES_DIR}/${page}`
    }))
  }
}

Буду рад любому способу реализации (включая способы сделать по другому, что с технической части все равно будет хорошо).
  • Вопрос задан
  • 26 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Strelka Institute Москва
от 150 000 руб.
Ivideon Москва
от 180 000 до 230 000 руб.
До 120 000 руб.
17 окт. 2019, в 03:16
37500 руб./за проект
16 окт. 2019, в 22:58
3200 руб./за проект
16 окт. 2019, в 22:43
3000 руб./за проект