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 .addAliases({ '@': require('path').resolve(__dirname, 'assets/js'), // $ = exact match only, subpath imports like swagger-ui-react/swagger-ui.css still resolve normally 'swagger-ui-react$': require('path').resolve(__dirname, 'node_modules/swagger-ui-react/index.cjs'), }) // 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() // enables the Symfony UX Stimulus bridge (used in assets/stimulus_bootstrap.js) // .enableStimulusBridge('./assets/controllers.json') // 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() .enableTypeScriptLoader((options) => { // transpileOnly skips type-checking during webpack build (run tsc separately for type checks) options.transpileOnly = true; }) // enables PostCSS loader for Tailwind .enablePostCssLoader() // 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() ; const webpack = require('webpack'); const config = Encore.getWebpackConfig(); // Polyfill Node.js built-ins needed by swagger-ui transitive deps config.resolve.fallback = { ...config.resolve.fallback, stream: require.resolve('stream-browserify'), buffer: require.resolve('buffer/'), }; // Inject Buffer global required by swagger-ui config.plugins.push( new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }) ); module.exports = config;