60 lines
1.4 KiB
JavaScript
60 lines
1.4 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 * LiteRyzJS/Project 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: {
|
||
|
project: './src/index.js'
|
||
|
},
|
||
|
output: {
|
||
|
filename: `[name].dist.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()
|
||
|
],
|
||
|
module: {
|
||
|
rules: [
|
||
|
{
|
||
|
test: /\.scss$/,
|
||
|
use: [
|
||
|
'style-loader',
|
||
|
'css-loader',
|
||
|
'sass-loader'
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
};
|