2019-11-01 13:40:30 +01:00
|
|
|
|
/*
|
|
|
|
|
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony)
|
|
|
|
|
*
|
2023-02-01 22:58:39 +01:00
|
|
|
|
* Copyright (C) 2019 - 2023 Jan Böhmer (https://github.com/jbtronics)
|
2019-11-01 13:40:30 +01:00
|
|
|
|
*
|
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
|
*
|
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
2019-02-24 18:05:06 +01:00
|
|
|
|
var Encore = require('@symfony/webpack-encore');
|
|
|
|
|
|
2020-05-10 22:12:56 +02:00
|
|
|
|
const zlib = require('zlib');
|
|
|
|
|
const CompressionPlugin = require("compression-webpack-plugin");
|
2020-06-13 21:24:24 +02:00
|
|
|
|
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
|
2023-08-20 13:03:09 +02:00
|
|
|
|
const { CKEditorTranslationsPlugin } = require( '@ckeditor/ckeditor5-dev-translations' );
|
2022-07-25 01:09:31 +02:00
|
|
|
|
const { styles } = require( '@ckeditor/ckeditor5-dev-utils' );
|
2020-05-10 22:12:56 +02:00
|
|
|
|
|
2020-01-07 19:16:39 +01:00
|
|
|
|
// 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');
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-24 18:05:06 +01:00
|
|
|
|
Encore
|
|
|
|
|
// directory where compiled assets will be stored
|
|
|
|
|
.setOutputPath('public/build/')
|
2023-11-03 23:01:23 +01:00
|
|
|
|
// This value doesn't matter, as the public path is set to auto later down. This is just to prevent a warning
|
2019-02-24 18:05:06 +01:00
|
|
|
|
.setPublicPath('/build')
|
2023-11-03 23:01:23 +01:00
|
|
|
|
// only needed for CDN's or subdirectory deploy (this should not be needeed, as we use auto public path)
|
2020-01-13 19:57:53 +01:00
|
|
|
|
//.setManifestKeyPrefix('build/')
|
|
|
|
|
|
2019-02-24 18:05:06 +01:00
|
|
|
|
/*
|
|
|
|
|
* 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.css) if you JavaScript imports CSS.
|
|
|
|
|
*/
|
|
|
|
|
.addEntry('app', './assets/js/app.js')
|
2022-10-03 23:09:50 +02:00
|
|
|
|
.addEntry('webauthn_tfa', './assets/js/webauthn_tfa.js')
|
2021-10-02 21:23:34 +02:00
|
|
|
|
|
2019-02-24 18:05:06 +01:00
|
|
|
|
//.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()
|
|
|
|
|
|
2023-06-11 19:58:31 +02:00
|
|
|
|
// enables the Symfony UX Stimulus bridge (used in assets/bootstrap.js)
|
|
|
|
|
.enableStimulusBridge('./assets/controllers.json')
|
|
|
|
|
|
2019-02-24 18:05:06 +01:00
|
|
|
|
// 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)
|
2022-03-05 21:58:43 +01:00
|
|
|
|
//.enableVersioning(Encore.isProduction())
|
|
|
|
|
.enableVersioning()
|
2019-02-24 18:05:06 +01:00
|
|
|
|
|
2023-02-01 22:58:39 +01:00
|
|
|
|
|
|
|
|
|
|
2022-10-22 22:06:27 +02:00
|
|
|
|
// configure Babel
|
|
|
|
|
// .configureBabel((config) => {
|
|
|
|
|
// config.plugins.push('@babel/a-babel-plugin');
|
|
|
|
|
// })
|
2021-10-02 21:23:34 +02:00
|
|
|
|
|
2022-10-22 22:06:27 +02:00
|
|
|
|
// enables and configure @babel/preset-env polyfills
|
2020-01-07 19:16:39 +01:00
|
|
|
|
.configureBabelPresetEnv((config) => {
|
2022-08-13 23:12:14 +02:00
|
|
|
|
config.useBuiltIns = 'usage';
|
2022-10-22 22:06:27 +02:00
|
|
|
|
config.corejs = '3.23';
|
2020-01-07 19:16:39 +01:00
|
|
|
|
})
|
2019-02-24 18:05:06 +01:00
|
|
|
|
// enables Sass/SCSS support
|
|
|
|
|
//.enableSassLoader()
|
|
|
|
|
|
|
|
|
|
// uncomment if you use TypeScript
|
2022-08-06 03:40:24 +02:00
|
|
|
|
.enableTypeScriptLoader()
|
2019-02-24 18:05:06 +01:00
|
|
|
|
|
2021-10-02 21:23:34 +02:00
|
|
|
|
// uncomment if you use React
|
|
|
|
|
//.enableReactPreset()
|
2019-02-24 18:05:06 +01:00
|
|
|
|
|
2021-10-02 21:23:34 +02:00
|
|
|
|
// uncomment to get integrity="..." attributes on your script & link tags
|
|
|
|
|
// requires WebpackEncoreBundle 1.4 or higher
|
|
|
|
|
.enableIntegrityHashes(Encore.isProduction())
|
2019-10-13 17:48:18 +02:00
|
|
|
|
|
2021-10-02 21:23:34 +02:00
|
|
|
|
// uncomment if you're having problems with a jQuery plugin
|
|
|
|
|
.autoProvidejQuery()
|
2022-07-25 01:09:31 +02:00
|
|
|
|
|
2023-08-20 13:03:09 +02:00
|
|
|
|
.addPlugin( new CKEditorTranslationsPlugin( {
|
2022-07-25 01:09:31 +02:00
|
|
|
|
// See https://ckeditor.com/docs/ckeditor5/latest/features/ui-language.html
|
|
|
|
|
language: 'en',
|
|
|
|
|
addMainLanguageTranslationsToAllAssets: true,
|
2022-07-26 01:43:30 +02:00
|
|
|
|
additionalLanguages: 'all',
|
|
|
|
|
outputDirectory: 'ckeditor_translations'
|
2022-07-25 01:09:31 +02:00
|
|
|
|
} ) )
|
|
|
|
|
|
|
|
|
|
// Use raw-loader for CKEditor 5 SVG files.
|
|
|
|
|
.addRule( {
|
|
|
|
|
test: /ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/,
|
|
|
|
|
loader: 'raw-loader'
|
|
|
|
|
} )
|
|
|
|
|
|
|
|
|
|
// Configure other image loaders to exclude CKEditor 5 SVG files.
|
|
|
|
|
.configureLoaderRule( 'images', loader => {
|
|
|
|
|
loader.exclude = /ckeditor5-[^/\\]+[/\\]theme[/\\]icons[/\\][^/\\]+\.svg$/;
|
|
|
|
|
} )
|
|
|
|
|
|
|
|
|
|
// Configure PostCSS loader.
|
|
|
|
|
.addLoader({
|
|
|
|
|
test: /ckeditor5-[^/\\]+[/\\]theme[/\\].+\.css$/,
|
|
|
|
|
loader: 'postcss-loader',
|
|
|
|
|
options: {
|
|
|
|
|
postcssOptions: styles.getPostCssConfig( {
|
|
|
|
|
themeImporter: {
|
|
|
|
|
themePath: require.resolve( '@ckeditor/ckeditor5-theme-lark' )
|
|
|
|
|
},
|
|
|
|
|
minify: true
|
|
|
|
|
} )
|
|
|
|
|
}
|
|
|
|
|
} )
|
|
|
|
|
|
2020-05-11 23:27:54 +02:00
|
|
|
|
;
|
|
|
|
|
|
2023-02-01 22:58:39 +01:00
|
|
|
|
//These are all the themes that are available in bootswatch
|
|
|
|
|
const AVAILABLE_THEMES = ['bootstrap', 'cerulean', 'cosmo', 'cyborg', 'darkly', 'flatly', 'journal',
|
|
|
|
|
'litera', 'lumen', 'lux', 'materia', 'minty', 'morph', 'pulse', 'quartz', 'sandstone', 'simplex', 'sketchy', 'slate', 'solar',
|
|
|
|
|
'spacelab', 'superhero', 'united', 'vapor', 'yeti', 'zephyr'];
|
2022-07-25 01:09:31 +02:00
|
|
|
|
|
2023-02-01 22:58:39 +01:00
|
|
|
|
for (const theme of AVAILABLE_THEMES) {
|
|
|
|
|
Encore.addEntry('theme_' + theme, './assets/themes/'+theme+'.js');
|
2022-03-06 14:54:08 +01:00
|
|
|
|
}
|
|
|
|
|
|
2023-02-01 22:58:39 +01:00
|
|
|
|
|
2020-05-11 23:27:54 +02:00
|
|
|
|
if (Encore.isProduction()) {
|
|
|
|
|
Encore.addPlugin(new CompressionPlugin({
|
2021-10-02 21:34:52 +02:00
|
|
|
|
filename: '[path][base].br',
|
2020-05-10 22:12:56 +02:00
|
|
|
|
algorithm: 'brotliCompress',
|
|
|
|
|
test: /\.(js|css|html|svg)$/,
|
|
|
|
|
compressionOptions: {
|
|
|
|
|
// zlib’s `level` option matches Brotli’s `BROTLI_PARAM_QUALITY` option.
|
|
|
|
|
level: 11,
|
|
|
|
|
},
|
|
|
|
|
//threshold: 10240,
|
|
|
|
|
minRatio: 0.8,
|
|
|
|
|
deleteOriginalAssets: false,
|
|
|
|
|
}))
|
|
|
|
|
|
2020-05-11 23:27:54 +02:00
|
|
|
|
.addPlugin(new CompressionPlugin({
|
2021-10-02 21:34:52 +02:00
|
|
|
|
filename: '[path][base].gz',
|
2020-05-11 23:27:54 +02:00
|
|
|
|
algorithm: 'gzip',
|
|
|
|
|
test: /\.(js|css|html|svg)$/,
|
|
|
|
|
deleteOriginalAssets: false,
|
|
|
|
|
}))
|
|
|
|
|
}
|
2019-02-24 18:05:06 +01:00
|
|
|
|
|
2020-06-13 21:24:24 +02:00
|
|
|
|
if (Encore.isDev()) {
|
2020-06-13 23:01:39 +02:00
|
|
|
|
//Only uncomment if needed, as this cause problems with Github actions (job does not finish)
|
2022-03-06 14:54:08 +01:00
|
|
|
|
Encore.addPlugin(new BundleAnalyzerPlugin());
|
2020-06-13 21:24:24 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2019-02-24 18:05:06 +01:00
|
|
|
|
module.exports = Encore.getWebpackConfig();
|
2023-11-03 23:01:23 +01:00
|
|
|
|
|
|
|
|
|
//Enable webpack auto public path (this only works in combination with WebpackAutoPathSubscriber!!)
|
|
|
|
|
//We do it here to supress a warning caused by webpack Encore
|
|
|
|
|
module.exports.output.publicPath = 'auto';
|