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'); } const basePath = process.env.BASE_PATH || '' // Definition de AppConfig Encore // directory where compiled assets will be stored .setOutputPath('public/build/app/') // public path used by the web server to access the output path .setPublicPath(basePath + '/build/app') // only needed for CDN's or sub-directory deploy .setManifestKeyPrefix('build/app') /* * 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') .addEntry('bootstrap-css', './assets/styles/bootstrap.scss') .addEntry('bootstrap-js', './assets/app-bootstrap.js') // enables the Symfony UX Stimulus bridge (used in assets/bootstrap.js) .enableStimulusBridge('./assets/controllers.json') // 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() .enableBuildNotifications() .enableSourceMaps(!Encore.isProduction()) // enables hashed filenames (e.g. app.abc123.css) .enableVersioning(!Encore.isProduction()) .configureBabel((config) => { config.plugins.push('@babel/plugin-transform-class-properties'); }) // enables @babel/preset-env polyfills .configureBabelPresetEnv((config) => { config.useBuiltIns = 'usage'; config.corejs = 3; }) .enablePostCssLoader() .autoProvidejQuery() .enableSassLoader() // build the first configuration const appConfig = Encore.getWebpackConfig(); // Set a unique name for the config (needed later!) appConfig.name = 'appConfig'; // reset Encore to build the second config Encore.reset(); // Definition de themeConfig Encore // directory where compiled assets will be stored .setOutputPath('public/build/theme/') // public path used by the web server to access the output path .setPublicPath(basePath + '/build/theme') // only needed for CDN's or sub-directory deploy .setManifestKeyPrefix('build/theme') .addEntry('theme','./public/theme-entrypoint.js') .splitEntryChunks() .enableSingleRuntimeChunk() .enableBuildNotifications() .enableSourceMaps(false) .enableVersioning(false) .enablePostCssLoader() ; // build the second configuration const themeConfig = Encore.getWebpackConfig(); // Set a unique name for the config (needed later!) themeConfig.name = 'themeConfig'; ; // export the final configuration as an array of multiple configurations module.exports = [appConfig, themeConfig];