65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
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')
|
|
.enableSassLoader()
|
|
.enablePostCssLoader()
|
|
.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/**/*.scss',
|
|
'frontend/**/*.ts',
|
|
],
|
|
reload: true,
|
|
open: true,
|
|
notify: false
|
|
}))
|
|
;
|
|
|
|
const config = Encore.getWebpackConfig();
|
|
config.resolve.plugins = [
|
|
new TsconfigPathsPlugin({
|
|
configFile: TS_CONFIG_PATH,
|
|
})
|
|
];
|
|
|
|
module.exports = config;
|