Skip to content

Migration from Webpack Encore

Install

WebpackEncoreBundle is linked with a Symfony Recipe. Before removing this bundle, backup your assets content and package.json/package-lock.json in another location. They will be deleted when you remove the bundle.

bash
mv assets assets.bak
mv package.json package.json.bak
mv package-lock.json package-lock.json.bak
composer remove symfony/webpack-encore-bundle

You can safely rename your backup and install the Vite Bundle.

bash
mv assets.bak assets
mv package.json.bak package.json
mv package-lock.json.bak package-lock.json
composer require pentatrion/vite-bundle

You need to remove Webpack dependencies

bash
npm rm @symfony/webpack-encore webpack webpack-cli webpack-notifier

# you probably won't need those dependencies either
npm rm @babel/core @babel/preset-env core-js regenerator-runtime

Check the package.json of the Webpack Encore Bundle recipe to check which dependencies are no longer needed.

You must then manually add the vite and vite-plugin-symfony dev dependencies and scripts in your existent package.json. Check the package.json reference file.

Continue your configuration following the installation page.

Configuration

There are some minor differences with the Twig functions

diff
// webpack.config.js
-Encore.addEntry("app", "./assets/app.js");
diff
// vite.config.js
+export default {
+    // ...
+    plugins: [
+      symfonyPlugin()
+    ],
+    build: {
+        rollupOptions: {
+            input: {
+                app: "./assets/app.js"
+            },
+        },
+    },
+};
diff
{% block stylesheets %}
-    {{ encore_entry_link_tags('app') }}
+    {{ vite_entry_link_tags("app") }}
{% endblock %}

{% block javascripts %}
-    {{ encore_entry_script_tags('app') }}
+    {{ vite_entry_script_tags("app") }}
{% endblock %}

Released under the MIT License.