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?
  • Вопрос задан
  • 227 просмотров
Решения вопроса 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 кб, т.е. даже меньше, чем без всего.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы