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' ] } ] } };