mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
const ManifestPlugin = require('webpack-manifest-plugin')
|
|
const WorkboxWebpackPlugin = require('workbox-webpack-plugin')
|
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
|
const CompressionPlugin = require('compression-webpack-plugin')
|
|
const ProgmemGenerator = require('./progmem-generator.js')
|
|
|
|
module.exports = function override(config, env) {
|
|
const hosted = process.env.REACT_APP_HOSTED
|
|
|
|
if (env === 'production' && !hosted) {
|
|
console.log('Custom webpack...')
|
|
|
|
// rename the output file, we need it's path to be short for LittleFS
|
|
config.output.filename = 'js/[id].[chunkhash:4].js'
|
|
config.output.chunkFilename = 'js/[id].[chunkhash:4].js'
|
|
|
|
// take out the manifest and service worker plugins
|
|
config.plugins = config.plugins.filter(
|
|
(plugin) => !(plugin instanceof ManifestPlugin),
|
|
)
|
|
config.plugins = config.plugins.filter(
|
|
(plugin) => !(plugin instanceof WorkboxWebpackPlugin.GenerateSW),
|
|
)
|
|
|
|
// shorten css filenames
|
|
const miniCssExtractPlugin = config.plugins.find(
|
|
(plugin) => plugin instanceof MiniCssExtractPlugin,
|
|
)
|
|
miniCssExtractPlugin.options.filename = 'css/[id].[contenthash:4].css'
|
|
miniCssExtractPlugin.options.chunkFilename =
|
|
'css/[id].[contenthash:4].c.css'
|
|
|
|
// build progmem data files
|
|
config.plugins.push(
|
|
new ProgmemGenerator({
|
|
outputPath: '../lib/framework/WWWData.h',
|
|
bytesPerLine: 20,
|
|
}),
|
|
)
|
|
|
|
// add compression plugin, compress javascript
|
|
config.plugins.push(
|
|
new CompressionPlugin({
|
|
filename: '[path].gz[query]',
|
|
algorithm: 'gzip',
|
|
test: /\.(js)$/,
|
|
deleteOriginalAssets: true,
|
|
}),
|
|
)
|
|
}
|
|
return config
|
|
}
|