const Encore = require('@symfony/webpack-encore'); const {TsconfigPathsPlugin} = require("tsconfig-paths-webpack-plugin"); const path = require('path'); const BrowserSyncPlugin = require('browser-sync-webpack-plugin'); if (!Encore.isRuntimeEnvironmentConfigured()) { Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev'); } const TS_CONFIG_PATH = path.resolve("frontend/tsconfig.json") Encore // Paths and Files .setOutputPath('public/build/') .setPublicPath('/build') .copyFiles({ from: './assets/', to: '../[path][name].[ext]' }) .addEntry('app', './frontend/app.ts') // Webpack .splitEntryChunks() .enableSingleRuntimeChunk() .cleanupOutputBeforeBuild() .enableBuildNotifications() .enableSourceMaps(!Encore.isProduction()) .enableVersioning(Encore.isProduction()) // Packages .configureBabelPresetEnv((config) => { config.useBuiltIns = 'usage'; config.corejs = '3.23'; }) .enableStimulusBridge('./frontend/controllers/controllers.json') .enableSvelte() //.enableSassLoader() .enableTypeScriptLoader(function tsconfigCallback(tsConfig) { tsConfig.configFile = TS_CONFIG_PATH; }) .enableForkedTypeScriptTypesChecking(function (forkedTsConfig) { forkedTsConfig.typescript = { configFile: TS_CONFIG_PATH } }) .addPlugin(new BrowserSyncPlugin({ proxy: 'http://localhost:8000', files: [ 'frontend/**/*.twig', 'frontend/**/*.svelte', 'frontend/**/*.ts', ], reload: true, open: true, notify: false })) ; const config = Encore.getWebpackConfig(); config.resolve.plugins = [ new TsconfigPathsPlugin({ configFile: TS_CONFIG_PATH, }) ]; config.resolve.conditionNames = ['browser', 'import', 'svelte'] module.exports = config;