mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-06-28 15:27:43 +00:00
* Fixed: Twitch emotes not displaying in Whispers. * Fixed: Alignment of in-line actions when using Emote Alignment: Padded. * Changed: Display the git commit hash for the current build in the FFZ Control Center, rather than the webpack build hash.
81 lines
No EOL
1.9 KiB
JavaScript
81 lines
No EOL
1.9 KiB
JavaScript
const webpack = require('webpack');
|
|
const merge = require('webpack-merge');
|
|
const common = require('./webpack.web.common.js');
|
|
|
|
const CopyPlugin = require('copy-webpack-plugin');
|
|
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
|
|
const ManifestPlugin = require('webpack-manifest-plugin');
|
|
const CleanPlugin = require('clean-webpack-plugin');
|
|
|
|
const uglify = require('uglify-es');
|
|
|
|
// Get Git info
|
|
|
|
const commit_hash = require('child_process').execSync('git rev-parse HEAD').toString().trim();
|
|
|
|
/* global module Buffer */
|
|
|
|
const config = module.exports = merge(common, {
|
|
devtool: 'source-map',
|
|
|
|
plugins: [
|
|
new CleanPlugin(['dist']),
|
|
new UglifyJSPlugin({
|
|
sourceMap: true,
|
|
uglifyOptions: {
|
|
compress: {
|
|
keep_fnames: true,
|
|
keep_classnames: true
|
|
},
|
|
mangle: {
|
|
keep_classnames: true,
|
|
keep_fnames: true
|
|
}
|
|
}
|
|
}),
|
|
new webpack.DefinePlugin({
|
|
__git_commit__: JSON.stringify(commit_hash)
|
|
}),
|
|
new CopyPlugin([
|
|
{
|
|
from: './src/entry.js',
|
|
to: 'script.min.js',
|
|
transform: content => {
|
|
const text = content.toString('utf8');
|
|
const minified = uglify.minify(text);
|
|
return (minified && minified.code) ? Buffer.from(minified.code) : content;
|
|
}
|
|
}
|
|
]),
|
|
new ManifestPlugin({
|
|
map: data => {
|
|
if ( data.name.endsWith('.scss') )
|
|
data.name = `${data.name.substr(0,data.name.length - 5)}.css`;
|
|
|
|
return data;
|
|
}
|
|
})
|
|
],
|
|
|
|
output: {
|
|
publicPath: '//cdn.frankerfacez.com/static/',
|
|
filename: '[name].[hash].js'
|
|
}
|
|
});
|
|
|
|
|
|
// This is why we can't have nice things.
|
|
// Why can't I just access process.env.NODE_ENV from
|
|
// one of these files when I set it with webpack's
|
|
// CLI? So stupid.
|
|
//
|
|
// So here we go.
|
|
// This is crap.
|
|
// But it works.
|
|
|
|
for(const rule of config.module.rules) {
|
|
if ( Array.isArray(rule.use) )
|
|
for(const use of rule.use)
|
|
if ( use.options && use.options.name && use.options.name.startsWith('[name].') )
|
|
use.options.name = `[name].[hash].${use.options.name.slice(7)}`;
|
|
} |