mirror of
https://github.com/titaniumnetwork-dev/Ultraviolet.git
synced 2025-05-16 13:00:01 -04:00
84 lines
2.5 KiB
JavaScript
84 lines
2.5 KiB
JavaScript
import { fileURLToPath } from 'url';
|
|
import ESLintPlugin from 'eslint-webpack-plugin';
|
|
import TerserPlugin from 'terser-webpack-plugin';
|
|
import CopyPlugin from 'copy-webpack-plugin';
|
|
import webpack from 'webpack';
|
|
import { readFile } from 'fs/promises';
|
|
|
|
// read version from package.json
|
|
const pk = JSON.parse(await readFile(new URL('package.json', import.meta.url)));
|
|
process.env.ULTRAVIOLET_VERSION = pk.version;
|
|
|
|
const isDevelopment = process.env.NODE_ENV !== 'production';
|
|
|
|
/**
|
|
* @type {import('webpack').Configuration}
|
|
*/
|
|
const config = {
|
|
mode: isDevelopment ? 'development' : 'production',
|
|
devtool: isDevelopment ? 'eval' : 'source-map',
|
|
entry: {
|
|
bundle: fileURLToPath(
|
|
new URL('./src/rewrite/index.js', import.meta.url)
|
|
),
|
|
client: fileURLToPath(
|
|
new URL('./src/client/index.js', import.meta.url)
|
|
),
|
|
handler: fileURLToPath(new URL('./src/uv.handler.js', import.meta.url)),
|
|
sw: fileURLToPath(new URL('./src/uv.sw.js', import.meta.url)),
|
|
},
|
|
output: {
|
|
path: fileURLToPath(new URL('./dist/', import.meta.url)),
|
|
filename: 'uv.[name].js',
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.(js|mjs)$/,
|
|
enforce: 'pre',
|
|
use: [
|
|
{
|
|
loader: 'source-map-loader',
|
|
options: {
|
|
filterSourceMappingUrl: (url, resourcePath) =>
|
|
// parse5 references sourcemaps but doesn't publish them
|
|
!resourcePath.includes('parse5'),
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
optimization: {
|
|
minimize: !isDevelopment,
|
|
minimizer: [
|
|
new TerserPlugin({
|
|
exclude: ['sw.js', 'uv.config.js'],
|
|
}),
|
|
],
|
|
},
|
|
plugins: [
|
|
new ESLintPlugin(),
|
|
new CopyPlugin({
|
|
patterns: [
|
|
{
|
|
from: fileURLToPath(
|
|
new URL('./src/uv.config.js', import.meta.url)
|
|
),
|
|
},
|
|
{
|
|
from: fileURLToPath(
|
|
new URL('./src/sw.js', import.meta.url)
|
|
),
|
|
},
|
|
],
|
|
}),
|
|
new webpack.EnvironmentPlugin('ULTRAVIOLET_VERSION'),
|
|
],
|
|
performance: {
|
|
// suppress "entrypoint size limit" warning
|
|
hints: false,
|
|
},
|
|
};
|
|
|
|
export default config;
|