All important runner changes have landed upstream. Bug: 358290763 Change-Id: Ib47f6838618e9c0081f60f3b60d52b1ce149b2af Reviewed-on: https://chromium-review.googlesource.com/c/external/github.com/WebKit/JetStream/+/7094856 Reviewed-by: Marja Hölttä <marja@chromium.org>
120 lines
3.3 KiB
JavaScript
120 lines
3.3 KiB
JavaScript
import path from "path";
|
|
import webpack from "webpack";
|
|
import TerserPlugin from "terser-webpack-plugin";
|
|
import UnicodeEscapePlugin from "@dapplets/unicode-escape-webpack-plugin";
|
|
import { LicenseWebpackPlugin } from "license-webpack-plugin";
|
|
import { fileURLToPath } from 'url';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
function createConfig({ filename, minify }) {
|
|
return {
|
|
mode: "production",
|
|
devtool: "source-map",
|
|
target: "web",
|
|
entry: "./src/react-render-test.cjs",
|
|
output: {
|
|
path: path.resolve(__dirname, "dist"),
|
|
filename: filename,
|
|
library: {
|
|
name: "ReactRenderTest",
|
|
type: "globalThis",
|
|
},
|
|
libraryTarget: "assign",
|
|
},
|
|
plugins: [
|
|
new webpack.ProvidePlugin({
|
|
TextEncoder: ["text-encoding", "TextEncoder"],
|
|
TextDecoder: ["text-encoding", "TextDecoder"],
|
|
MessageChannel: [path.resolve(__dirname, "src/mock/message_channel.cjs"), "MessageChannel"],
|
|
process: "process/browser",
|
|
Buffer: ["buffer", "Buffer"],
|
|
}),
|
|
new UnicodeEscapePlugin({
|
|
test: /\.(js|jsx|ts|tsx)$/, // Escape Unicode in JavaScript and TypeScript files
|
|
}),
|
|
new LicenseWebpackPlugin({
|
|
perChunkOutput: true,
|
|
outputFilename: "LICENSE.txt",
|
|
}),
|
|
],
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.c?js$/,
|
|
exclude: /node_modules/,
|
|
use: {
|
|
loader: "babel-loader",
|
|
options: {
|
|
presets: [
|
|
["@babel/preset-env", {
|
|
// Keep ES6 classes.
|
|
exclude: ["@babel/plugin-transform-classes"]
|
|
}],
|
|
"@babel/preset-react"
|
|
],
|
|
plugins: [path.resolve(__dirname, "../utils/BabelCacheBuster.mjs")],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
test: /\.c?js$/,
|
|
include: path.resolve(__dirname, "node_modules"),
|
|
use: {
|
|
loader: "babel-loader",
|
|
options: {
|
|
plugins: [path.resolve(__dirname, "../utils/BabelCacheBuster.mjs")],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
optimization: {
|
|
minimizer: [
|
|
new TerserPlugin({
|
|
extractComments: false,
|
|
terserOptions: {
|
|
mangle: minify,
|
|
format: {
|
|
// Keep this comment for cache-busting.
|
|
comments: /ThouShaltNotCache/i,
|
|
},
|
|
},
|
|
}),
|
|
],
|
|
},
|
|
resolve: {
|
|
fallback: {
|
|
"assert": path.resolve("assert/"),
|
|
"buffer": path.resolve("buffer/"),
|
|
"canvas": false,
|
|
"child_process": false,
|
|
"crypto": false,
|
|
"fs": false,
|
|
"http": false,
|
|
"https": false,
|
|
"net": false,
|
|
"os": false,
|
|
"path": path.resolve("path-browserify"),
|
|
"stream": path.resolve("stream-browserify"),
|
|
"string_decoder": path.resolve("string_decoder/"),
|
|
"tls": false,
|
|
"url": path.resolve("url/"),
|
|
"util": path.resolve("util/"),
|
|
"vm": false,
|
|
"zlib": false,
|
|
}
|
|
},
|
|
performance: {
|
|
hints: false
|
|
},
|
|
};
|
|
};
|
|
|
|
|
|
|
|
export default [
|
|
createConfig({ filename: "bundle.min.js", minify: true }),
|
|
createConfig({ filename: "bundle.js", minify: false })
|
|
];
|