Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.7 KiB
90 lines
2.7 KiB
process.env.NODE_ENV = 'production'; |
|
|
|
const path = require('path'); |
|
const {merge} = require('webpack-merge'); |
|
const common = require('./webpack.common.js'); |
|
const keepAsset = require('./keepAsset.js'); |
|
|
|
//const CompressionPlugin = require("compression-webpack-plugin"); |
|
const WebpackOnBuildPlugin = require('on-build-webpack'); |
|
//const TerserJSPlugin = require('terser-webpack-plugin'); |
|
//const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); |
|
const fs = require('fs'); |
|
|
|
const buildDir = __dirname + '/public/'; |
|
|
|
module.exports = merge(common, { |
|
mode: 'production', |
|
|
|
devtool: 'source-map', |
|
|
|
optimization: { |
|
//minimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})], |
|
//runtimeChunk: 'single', |
|
splitChunks: { |
|
chunks: 'all', |
|
maxInitialRequests: Infinity, |
|
//minSize: 0, |
|
cacheGroups: { |
|
vendor: { |
|
test: /[\\/]node_modules[\\/]/, |
|
name(module) { |
|
// get the name. E.g. node_modules/packageName/not/this/part.js |
|
// or node_modules/packageName |
|
const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]; |
|
|
|
// npm package names are URL-safe, but some servers don't like @ symbols |
|
return `npm.${packageName.replace('@', '')}`; |
|
}, |
|
}, |
|
}, |
|
} |
|
}, |
|
|
|
plugins: [ |
|
/* new CompressionPlugin({ |
|
filename: '[path].gz[query]', |
|
algorithm: 'gzip', |
|
test: /\.(js|css|html|svg)$/, |
|
threshold: 10240, |
|
minRatio: 0.8, |
|
}), */ |
|
/* new CompressionPlugin({ |
|
filename: '[path].br[query]', |
|
algorithm: 'brotliCompress', |
|
test: /\.(js|css|html|svg)$/, |
|
compressionOptions: { level: 11 }, |
|
threshold: 10240, |
|
minRatio: 0.8, |
|
deleteOriginalAssets: false, |
|
}), */ |
|
|
|
// new WebpackOnBuildPlugin(function(stats) { |
|
// const newlyCreatedAssets = stats.compilation.assets; |
|
|
|
// const unlinked = []; |
|
// fs.readdir(path.resolve(buildDir), (err, files) => { |
|
// files.forEach(file => { |
|
// //console.log('to unlink 1:', file); |
|
|
|
// if(keepAsset(file)) { |
|
// return; |
|
// } |
|
|
|
// let p = path.resolve(buildDir + file); |
|
// if(!newlyCreatedAssets[file] && ['.gz', '.js', '.ts', '.map', '.css', '.txt'].find(ext => file.endsWith(ext)) !== undefined) { |
|
|
|
// //console.log('to unlink 2:', file); |
|
|
|
// fs.unlinkSync(p); |
|
// unlinked.push(file); |
|
// } |
|
// }); |
|
|
|
// if(unlinked.length > 0) { |
|
// console.log('Removed old assets: ', unlinked); |
|
// } |
|
// }); |
|
// }) |
|
] |
|
});
|
|
|