50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
const path = require('path');
|
|
const { version } = require('./package.json');
|
|
const webpack = require('webpack');
|
|
|
|
|
|
class PrependVersionPlugin {
|
|
apply(compiler) {
|
|
compiler.hooks.emit.tapAsync('PrependVersionPlugin', (compilation, callback) => {
|
|
Object.keys(compilation.assets).forEach((filename) => {
|
|
if (filename.endsWith('.js')) {
|
|
const asset = compilation.assets[filename];
|
|
|
|
const headerText = `/*!\n * Part of LiteRyzJS v${version}\n * Copyright 2023-2024 Ray Lam (https://www.hiimray.co.uk)\n *\n */\n`;
|
|
|
|
const newContent = headerText + asset.source();
|
|
|
|
compilation.assets[filename] = {
|
|
source: () => newContent,
|
|
size: () => newContent.length,
|
|
};
|
|
}
|
|
});
|
|
|
|
callback();
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
entry: {
|
|
extensions: './src/extensions.js',
|
|
graphics: './src/graphics.js',
|
|
project: './src/project.js'
|
|
},
|
|
output: {
|
|
filename: `[name].min.js`,
|
|
path: path.resolve(__dirname, 'dist'),
|
|
library: 'LiteRyzJS',
|
|
libraryTarget: 'umd',
|
|
globalObject: 'this'
|
|
},
|
|
mode: 'production', // development|production
|
|
plugins: [
|
|
new webpack.DefinePlugin({
|
|
'process.env.VERSION': JSON.stringify(version)
|
|
}),
|
|
new PrependVersionPlugin()
|
|
]
|
|
}; |