Релиз Webpack 3

26 июня 2017г.  webpack 3   


С момента выхода второй версии webpack прошло (по ощущениям) не так много времени. Не все даже успели сделать апгрейд с первой версии. Тем не менее, тихо и без происшествий зарелизился Webpack 3.


Переход с Webpack 2 на 3

Если вы используете вторую версию, то перейти на третью можете прямо сейчас, не опасаясь что где-то что-то перестанет работать. Подправьте ваш package.json и выполните:

npm update

или выполните:

npm install webpack@3.0.0 --save-dev

По статистике разработчиков webpack, 98% пользователей, совершивших данный апгрейд, не испытали никаких проблем. Если вы оказались в числе тех самых невезучих 2%, то нужно проверить список плагинов, которые вы используете и, возможно, какие-то из них также требуют обновления.

Scope Hosting

Scope Hosting - новая фича в третьем webpack-е. При сборке бандлов, webpack 2 оборачивал каждый в свою отдельную анонимную функуцию, в результате у каждого бандла был свой отдельный scope. Это несколько замедляет выполнение кода в браузере. В webpack 3 появился плагин, позволяющий объединять scope всех бандлов в один. Достаточно прописать в конфиге следующий код:

module.exports = { plugins: [ new webpack.optimize.ModuleConcatenationPlugin() ] };

Пользователи, протестировавшие данную фичу на своих боевых проектах, заявляют, что скорость обработки полученного таким образом бандла браузером выросла в среднем на 20%. Что, согласитесь, не так уж и плохо, при том, что мы не изменили ни одной строчки кода в своем проекте.

Магические комменты

Расширены возможности динамического импорта (import()). Теперь, с помощью так называемых "магических комментариев", можно передавать кастомные имена ваших chunk-ов для более удобной их организации:

import(/* webpackChunkName: "my-chunk-name" */ 'module');

Не могу отметить, что это супер-важная-критичная штука, но это то, что просили многие пользователи webpack 2.

Кроме этого, как всегда были пофикшены различные баги, мешающие наслаждаться этим прекрасным инструментом в полной мере.

Что ждать в будущем

Планы на четвертый релиз:

  • улучшенное кеширование билдов для ускорения сборок; предполагается серьезно поработать и над остальными аспектами начальной сборки и инкрементальных сборок во имя их ускорения;
  • улучшения при работе с TypeScript-ом; пока не сильно понятно, что имелось в виду, идет ли разговор о выводе ошибок или об увеличении производительности при сборке js-файлов, созданных при помощью TSC, в бандлы;
  • поддержка модулей WASM
  • ну и конечно багфиксы и прочие хотелки пользователей.