diff --git a/webpack.config.js b/webpack.config.js index 42d4764..e42a307 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,84 +1,83 @@ -const Encore = require("@symfony/webpack-encore"); +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.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev'); } -const CopyWebpackPlugin = require("copy-webpack-plugin"); - Encore - // directory where compiled assets will be stored - .setOutputPath("public/build/") + // directory where compiled assets will be stored + .setOutputPath('public/build/') .copyFiles({ from: "./assets/images", to: "images/[path][name].[ext]" }) // public path used by the web server to access the output path - .setPublicPath("/build") - // only needed for CDN's or sub-directory deploy - //.setManifestKeyPrefix('build/') - - - /* - * ENTRY CONFIG - * - * Add 1 entry for each "page" of your app - * (including one that's included on every page - e.g. "app") - * - * Each entry will result in one JavaScript file (e.g. app.js) - * and one CSS file (e.g. app.scss) if your JavaScript imports CSS. - */ - .addEntry("app", "./assets/js/app.js") - //.addEntry('page1', './assets/js/page1.js') - //.addEntry('page2', './assets/js/page2.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() - .disableSingleRuntimeChunk() - - /* - * 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()) - - // enables @babel/preset-env polyfills - .configureBabel(() => { - }, { - useBuiltIns: "usage", - corejs: 3 - }) - - // enables Sass/SCSS support - .enableSassLoader() + .setPublicPath('/build') + // only needed for CDN's or sub-directory deploy + //.setManifestKeyPrefix('build/') -// uncomment if you use TypeScript -//.enableTypeScriptLoader() + /* + * 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') -// uncomment to get integrity="..." attributes on your script & link tags -// requires WebpackEncoreBundle 1.4 or higher -//.enableIntegrityHashes(Encore.isProduction()) + // enables the Symfony UX Stimulus bridge (used in assets/bootstrap.js) + .enableStimulusBridge('./assets/controllers.json') - // uncomment if you're having problems with a jQuery plugin - .autoProvidejQuery() + // When enabled, Webpack "splits" your files into smaller pieces for greater optimization. + .splitEntryChunks() -// uncomment if you use API Platform Admin (composer req api-admin) -//.enableReactPreset() -//.addEntry('admin', './assets/js/admin.js') + // 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-proposal-class-properties'); + }) + + // enables @babel/preset-env polyfills + .configureBabelPresetEnv((config) => { + config.useBuiltIns = 'usage'; + config.corejs = 3; + }) + + // enables Sass/SCSS support + .enableSassLoader() + + .enableLessLoader() + + + // 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();