Fragster
@Fragster
помогло? отметь решением!

Почему после выделения кода библиотек суммарный размер билда увеличился?

Добавил в webpack.config.js такой код для выделения библиотек в отдельный бандл:

var fs = require('fs');

var package = JSON.parse(fs.readFileSync('./package.json','utf-8'));
var vendor = [];
for (var name in package.dependencies) {
  vendor.push(name);
}

module.exports = {
  entry: {
    app: './src/main.js',
    vendor: vendor
  },
  plugins: [
    new webpack.optimize.CommonsChunkPlugin({
      name: 'vendor'
    })
  ]
}

Получаем:
Asset      Size  Chunks                    Chunk Names
       app.build.js   50.6 kB       0  [emitted]         app
    vendor.build.js    711 kB       1  [emitted]  [big]  vendor
          style.css     53 kB    0, 1  [emitted]         app, vendor

итого 814 кб

Если закомментировать vendor, то поучаем следующую картину:
Asset      Size  Chunks                    Chunk Names
       app.build.js    536 kB       0  [emitted]  [big]  app
    vendor.build.js   1.44 kB       1  [emitted]         vendor
          style.css    192 kB       0  [emitted]         app

итого 729 кб

Как сделать так, чтобы и модули выделить, и размер не увеличить?
Ну и заодно - как сделать так, чтобы вебпак пересобирал только app, без node-modules?
  • Вопрос задан
  • 225 просмотров
Решения вопроса 2
Lynn
@Lynn
nginx, js, css
Подозреваю, что не все пакеты из dependencies реально используются.

В первом случае вы принудительно добавили в сборку всё, а во втором вебпак собрал только то, что нужно
Ответ написан
Fragster
@Fragster Автор вопроса
помогло? отметь решением!
С помощью webpack-bundle-analyzer увидел, что это moment.js с его локализациями, с помощью
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/) убил локализации из бандла, получилось так:
Time: 12245ms
          Asset      Size  Chunks                    Chunk Names
   app.build.js   50.4 kB       0  [emitted]         app
vendor.build.js    546 kB       1  [emitted]  [big]  vendor
      style.css     53 kB    0, 1  [emitted]         app, vendor
  style.css.map  86 bytes    0, 1  [emitted]         app, vendor

итого 649 кб, т.е. даже меньше, чем без всего.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
06 дек. 2021, в 09:20
50000 руб./за проект
06 дек. 2021, в 07:23
1000 руб./за проект
06 дек. 2021, в 07:18
1000 руб./за проект