Download Latest Version 5.1_ Stimulus Bridge 4 source code.tar.gz (3.6 MB)
Email in envelope

Get an email when there's a new version of Webpack Encore

Home / v5.0.0
Name Modified Size InfoDownloads / Week
Parent folder
5.0_ Major dependency upgrades and deprecated features deletion, less dependencies_ Encore on a diet! source code.tar.gz 2024-09-29 3.6 MB
5.0_ Major dependency upgrades and deprecated features deletion, less dependencies_ Encore on a diet! source code.zip 2024-09-29 3.8 MB
README.md 2024-09-29 7.4 kB
Totals: 3 Items   7.4 MB 0

Hey packagers!

Exactly one month after the last release, this new major release is now ready to be used! 🎉

This new version contains many changes, in a nutshell: - removal of support for Node.js 19 and 21 - deletion of deprecated features, such as support for Vue 2 and ESLint. - removal of support for webpack-cli@4 and webpack-dev-server@4, - update to sass-loader@16, css-loader@7 and css-minimizer-webpack-plugin@7 - makes Webpack dev-server optional - and much more... see the full changelog below!

With all these modifications, we were able to lighten @symfony/webpack-encore by removing ~220 dependencies comparing to the version 4.7.0, thus reducing installation times and disk writing, but also reducing the possibility of installing a dependency containing a vulnerability:

Package info for "@symfony/webpack-encore@4.7.0": 61 MB
  Released: 2024-08-29 16:26:01.762 +0000 UTC (4w3d ago)
  Downloads last week: 27,421 (16.14%)
  Estimated traffic last week: 1.7 TB
  Subdependencies: 628

Package info for "@symfony/webpack-encore@5.0.0": 53 MB
  Released: 2024-09-29 20:08:45.238 +0000 UTC (1m20s ago)
  Downloads last week: N/A (N/A%)
  Estimated traffic last week: N/A
  Subdependencies: 408

Estimated new statistics:
  Package size: 61 MB → 53 MB (86.01%)
  Subdependencies: 628 → 408 (-220)
  Traffic with last week's downloads:
    For current version: 1.7 TB → 1.4 TB (235 GB saved)
    For all versions: 10 TB → 9.0 TB (1.5 TB saved)

Features

  • [#1344] Add options configuration callback to Encore.enableReactPreset() (@Kocal)

  • [#1345] Add support for integrity hashes when asset names contain a query string (@Kocal)

BC Breaks

  • [#1321] Drop support of Node.js 19 and 21 (@Kocal)

  • [#1307] Drop webpack-cli 4 support, only webpack-cli ^5.1.4 is supported (@Kocal)

  • [#1318] Drop webpack-dev-server 4 support, only webpack-dev-server 5 is supported (@Kocal)

The dev-server options have changed between versions 4 and 5, see the official migration guide to v5. For example:

:::js
// With webpack-dev-server 4:
Encore.configureDevServerOptions((options) => {
   options.https = {
     ca: "./path/to/server.pem",
     pfx: "./path/to/server.pfx",
     key: "./path/to/server.key",
     cert: "./path/to/server.crt",
     passphrase: "webpack-dev-server",
     requestCert: true,
   };
});

// With webpack-dev-server 5 (now):
Encore.configureDevServerOptions((options) => {
   options.server = {
      type: 'https',
      options: {
         ca: "./path/to/server.pem",
         pfx: "./path/to/server.pfx",
         key: "./path/to/server.key",
         cert: "./path/to/server.crt",
         passphrase: "webpack-dev-server",
         requestCert: true,
      }
   };
});
  • [#1336] Make webpack-dev-server dependency optional (@Kocal)

The webpack-dev-server package is now an optional peer dependency. It has been removed because some projects may not use it, and it was installing a bunch of unnecessary dependencies.

Removing the webpack-dev-server dependency from Encore reduces the number of dependencies from 626 to 295 (-331!), it helps to reduce the size of the node_modules directory and the number of possible vulnerabilities.

To use the webpack-dev-server again, you need to install it manually:

:::shell
npm install webpack-dev-server --save-dev
# or 
yarn add webpack-dev-server --dev
# or 
pnpm install webpack-dev-server --save-dev
  • [#1308] Drop Vue 2 support (End-Of-Life), only Vue 3 is supported (@Kocal)

  • [#1309] Drop ESLint integration (@Kocal)

  • [#1313] Drop clean-webpack-plugin in favor of webpack's output.clean configuration. The configuration settings supported by Encore.cleanupOutputBeforeBuild have changed (@stof)

  • [#1324] Drop css-minimizer-webpack-plugin 5 support, only css-minimizer-webpack-plugin 7 is supported (@Kocal)

  • [#1342] Replace assets-webpack-plugin dependency by an internal plugin, to generate entrypoints.json file (@Kocal)

  • [#1317] Drop support of sass-loader ^13 and ^14, add support for sass-loader ^16 (@Kocal)

The sass-loader's options have changed, the modern options are now used by default. Though not recommended, you must specify the option api: 'legacy' if you want to keep the legacy options. For example:

:::js
// With the legacy API:
Encore.enableSassLoader((options) => {
    options.api = 'legacy';
    options.includePaths = [/*...*/];
});

// With the modern API (default):
Encore.enableSassLoader((options) => {
   options.loadPaths = [/*...*/];
});
  • [#1319] Drop support of css-loader ^6, add support for css-loader ^7.1 (@Kocal)

Since css-loader [7.0.0](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md#700, styles imports became named by default. It means you should update your code from:

:::js
import style from "./style.css";

console.log(style.myClass);

to:

:::js
import * as style from "./style.css";

console.log(style.myClass);

There is also a possibility to keep the previous behavior by configuring the css-loader's modules option:

:::js
config.configureCssLoader(options => {
   if (options.modules) {
       options.modules.namedExport = false;
       options.modules.exportLocalsConvention = 'as-is';
   } 
});

[!IMPORTANT]
If you use CSS Modules inside .vue files, until https://github.com/vuejs/vue-loader/pull/1909 is merged and released, you will need to restore the previous behavior by configuring Encore with the code above.

  • [#1333] Replace chalk by picocolors (@Kocal)

Internal

  • [#1325] Remove no-op argument (@stof)

  • [#1327] Fix compat with configuring the devserver server as a string (@stof)

  • [#1328] Remove non-existent option in our package-up utility (@stof)

  • [#1329] Read the controllers.json as string rather than Buffer (@stof)

  • [#1330] Add some types in the internal implementation of Encore (@stof)

  • [#1331] test(deps): replace Zombie by Puppeteer (@Kocal)

  • [#1332] Upgrade locked dependencies (@stof)

  • [#1334] Upgrade the version of stylus used in dev (@stof)

  • [#1335] Fix ESLint warning (@stof)

  • [#1339] Add PR template (@Kocal)

  • [#1343] Add tests for CSS Modules with React and Preact (@Kocal)

Upgrading

Run:

npm install "@symfony/webpack-encore@^5.0.0" --save-dev

or:

yarn upgrade "@symfony/webpack-encore@^5.0.0"

Changes: v4.7.0..v5.0.0

Happy Packing!

Source: README.md, updated 2024-09-29