From 390d893ca1af09bf340faa9c3b9879cd94ce2703 Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Fri, 27 Mar 2026 13:39:14 +0100 Subject: [PATCH] [WebpackEncoreBundle] Add recipe for Webpack Encore 6.0 (#1521) https://github.com/symfony/webpack-encore/releases/tag/v6.0.0 --- .../webpack-encore-bundle/2.1/assets/app.js | 9 +++ .../2.1/assets/styles/app.css | 3 + .../2.1/config/packages/webpack_encore.yaml | 45 +++++++++++ .../webpack-encore-bundle/2.1/manifest.json | 38 ++++++++++ .../webpack-encore-bundle/2.1/package.json | 19 +++++ .../2.1/post-install.txt | 9 +++ .../2.1/webpack.config.js | 76 +++++++++++++++++++ 7 files changed, 199 insertions(+) create mode 100644 symfony/webpack-encore-bundle/2.1/assets/app.js create mode 100644 symfony/webpack-encore-bundle/2.1/assets/styles/app.css create mode 100644 symfony/webpack-encore-bundle/2.1/config/packages/webpack_encore.yaml create mode 100644 symfony/webpack-encore-bundle/2.1/manifest.json create mode 100644 symfony/webpack-encore-bundle/2.1/package.json create mode 100644 symfony/webpack-encore-bundle/2.1/post-install.txt create mode 100644 symfony/webpack-encore-bundle/2.1/webpack.config.js diff --git a/symfony/webpack-encore-bundle/2.1/assets/app.js b/symfony/webpack-encore-bundle/2.1/assets/app.js new file mode 100644 index 00000000..85065048 --- /dev/null +++ b/symfony/webpack-encore-bundle/2.1/assets/app.js @@ -0,0 +1,9 @@ +/* + * Welcome to your app's main JavaScript file! + * + * We recommend including the built version of this JavaScript file + * (and its CSS file) in your base layout (base.html.twig). + */ + +// any CSS you import will output into a single css file (app.css in this case) +import './styles/app.css'; diff --git a/symfony/webpack-encore-bundle/2.1/assets/styles/app.css b/symfony/webpack-encore-bundle/2.1/assets/styles/app.css new file mode 100644 index 00000000..cb33b131 --- /dev/null +++ b/symfony/webpack-encore-bundle/2.1/assets/styles/app.css @@ -0,0 +1,3 @@ +body { + background-color: lightgray; +} diff --git a/symfony/webpack-encore-bundle/2.1/config/packages/webpack_encore.yaml b/symfony/webpack-encore-bundle/2.1/config/packages/webpack_encore.yaml new file mode 100644 index 00000000..4c009ee4 --- /dev/null +++ b/symfony/webpack-encore-bundle/2.1/config/packages/webpack_encore.yaml @@ -0,0 +1,45 @@ +webpack_encore: + # The path where Encore is building the assets - i.e. Encore.setOutputPath() + output_path: '%kernel.project_dir%/public/build' + # If multiple builds are defined (as shown below), you can disable the default build: + # output_path: false + + # Set attributes that will be rendered on all script and link tags + script_attributes: + defer: true + # Uncomment (also under link_attributes) if using Turbo Drive + # https://turbo.hotwired.dev/handbook/drive#reloading-when-assets-change + # 'data-turbo-track': reload + # link_attributes: + # Uncomment if using Turbo Drive + # 'data-turbo-track': reload + + # If using Encore.enableIntegrityHashes() and need the crossorigin attribute (default: false, or use 'anonymous' or 'use-credentials') + # crossorigin: 'anonymous' + + # Preload all rendered script and link tags automatically via the HTTP/2 Link header + # preload: true + + # Throw an exception if the entrypoints.json file is missing or an entry is missing from the data + # strict_mode: false + + # If you have multiple builds: + # builds: + # frontend: '%kernel.project_dir%/public/frontend/build' + + # pass the build name as the 3rd argument to the Twig functions + # {{ encore_entry_script_tags('entry1', null, 'frontend') }} + +framework: + assets: + json_manifest_path: '%kernel.project_dir%/public/build/manifest.json' + +#when@prod: +# webpack_encore: +# # Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes) +# # Available in version 1.2 +# cache: true + +#when@test: +# webpack_encore: +# strict_mode: false diff --git a/symfony/webpack-encore-bundle/2.1/manifest.json b/symfony/webpack-encore-bundle/2.1/manifest.json new file mode 100644 index 00000000..16f8dcd4 --- /dev/null +++ b/symfony/webpack-encore-bundle/2.1/manifest.json @@ -0,0 +1,38 @@ +{ + "bundles": { + "Symfony\\WebpackEncoreBundle\\WebpackEncoreBundle": ["all"] + }, + "copy-from-recipe": { + "assets/": "assets/", + "config/": "%CONFIG_DIR%/", + "package.json": "package.json", + "webpack.config.js": "webpack.config.js" + }, + "aliases": ["encore", "webpack", "webpack-encore"], + "gitignore": [ + "/node_modules/", + "/%PUBLIC_DIR%/build/", + "npm-debug.log", + "yarn-error.log" + ], + "conflict": { + "symfony/framework-bundle": "<5.4", + "symfony/flex": "<1.20.0 || >=2.0.0,<2.3.0" + }, + "add-lines": [ + { + "file": "templates/base.html.twig", + "content": " {{ encore_entry_script_tags('app') }}", + "position": "after_target", + "target": "{% block javascripts %}", + "warn_if_missing": true + }, + { + "file": "templates/base.html.twig", + "content": " {{ encore_entry_link_tags('app') }}", + "position": "after_target", + "target": "{% block stylesheets %}", + "warn_if_missing": true + } + ] +} diff --git a/symfony/webpack-encore-bundle/2.1/package.json b/symfony/webpack-encore-bundle/2.1/package.json new file mode 100644 index 00000000..6f96f230 --- /dev/null +++ b/symfony/webpack-encore-bundle/2.1/package.json @@ -0,0 +1,19 @@ +{ + "devDependencies": { + "@babel/core": "^7.17.0", + "@babel/preset-env": "^7.16.0", + "@symfony/webpack-encore": "^6.0.0", + "core-js": "^3.38.0", + "regenerator-runtime": "^0.13.9", + "webpack": "^5.72", + "webpack-cli": "^6.0.0" + }, + "license": "UNLICENSED", + "private": true, + "scripts": { + "dev-server": "encore dev-server", + "dev": "encore dev", + "watch": "encore dev --watch", + "build": "encore production --progress" + } +} diff --git a/symfony/webpack-encore-bundle/2.1/post-install.txt b/symfony/webpack-encore-bundle/2.1/post-install.txt new file mode 100644 index 00000000..d0ca6c4b --- /dev/null +++ b/symfony/webpack-encore-bundle/2.1/post-install.txt @@ -0,0 +1,9 @@ + * Install NPM and run npm install + + * Compile your assets for development: npm run dev + + * Compile your assets for development and watch for any modifications: npm run watch + + * Or start the development server: npm run dev-server + + * Compile your assets for production: npm run build diff --git a/symfony/webpack-encore-bundle/2.1/webpack.config.js b/symfony/webpack-encore-bundle/2.1/webpack.config.js new file mode 100644 index 00000000..391fd7a1 --- /dev/null +++ b/symfony/webpack-encore-bundle/2.1/webpack.config.js @@ -0,0 +1,76 @@ +const Encore = require('@symfony/webpack-encore'); + +// Manually configure the runtime environment if not already configured yet by the "encore" command. +// It's useful when you use tools that rely on webpack.config.js file. +if (!Encore.isRuntimeEnvironmentConfigured()) { + Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev'); +} + +Encore + // directory where compiled assets will be stored + .setOutputPath('public/build/') + // public path used by the web server to access the output path + .setPublicPath('/build') + // only needed for CDN's or subdirectory deploy + //.setManifestKeyPrefix('build/') + + /* + * ENTRY CONFIG + * + * Each entry will result in one JavaScript file (e.g. app.js) + * and one CSS file (e.g. app.css) if your JavaScript imports CSS. + */ + .addEntry('app', './assets/app.js') + + // When enabled, Webpack "splits" your files into smaller pieces for greater optimization. + .splitEntryChunks() + + // will require an extra script tag for runtime.js + // but, you probably want this, unless you're building a single-page app + .enableSingleRuntimeChunk() + + /* + * FEATURE CONFIG + * + * Enable & configure other features below. For a full + * list of features, see: + * https://symfony.com/doc/current/frontend.html#adding-more-features + */ + .cleanupOutputBeforeBuild() + + // Displays build status system notifications to the user + // .enableBuildNotifications() + + .enableSourceMaps(!Encore.isProduction()) + // enables hashed filenames (e.g. app.abc123.css) + .enableVersioning(Encore.isProduction()) + + // configure Babel + // .configureBabel((config) => { + // config.plugins.push('@babel/a-babel-plugin'); + // }) + + // enables and configure @babel/preset-env polyfills + .configureBabelPresetEnv((config) => { + config.useBuiltIns = 'usage'; + config.corejs = '3.38'; + }) + + // enables Sass/SCSS support + //.enableSassLoader() + + // uncomment if you use TypeScript + //.enableTypeScriptLoader() + + // uncomment if you use React + //.enableReactPreset() + + // uncomment to get integrity="..." attributes on your script & link tags + // requires WebpackEncoreBundle 1.4 or higher + //.enableIntegrityHashes(Encore.isProduction()) + + // uncomment if you're having problems with a jQuery plugin + //.autoProvidejQuery() +; + +module.exports = Encore.getWebpackConfig();