Files
Nicolas Chevobbe 29843b03b0 Bug 1826503 - [devtools] Properly vendor fuzzaldrin-plus. r=devtools-reviewers,sylvestre,ochameau.
The library is added in devtools/client/shared/vendor, like the other third-party
libraries we use in DevTools.

This was the latest file that justified the debugger-specific vendor machinery,
so we can clean that up now.

First, we can remove the vendor.js file.
With this, this means that bin/bundle.js now only bundles the workers, using rollup,
so we can remove webpack and its associated packages from package.json, as well
as the webpack.config.js.
Finally, we can stop handling debugger vendors in build-debugger.js

Differential Revision: https://phabricator.services.mozilla.com/D193916
2023-11-24 08:50:42 +00:00

87 lines
2.6 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
const path = require("path");
const { rollup } = require("rollup");
const nodeResolve = require("@rollup/plugin-node-resolve");
const commonjs = require("@rollup/plugin-commonjs");
const injectProcessEnv = require("rollup-plugin-inject-process-env");
const nodePolyfills = require("rollup-plugin-node-polyfills");
const projectPath = path.resolve(__dirname, "..");
const bundlePath = path.join(projectPath, "./dist");
process.env.NODE_ENV = "production";
function getEntry(filename) {
return path.join(__dirname, "..", filename);
}
/**
* The `bundle` module will build the following:
* - parser-worker.js, pretty-print-worker.js, search-worker:
* Workers used only by the debugger.
* Sources at devtools/client/debugger/src/workers/*
*/
(async function bundle() {
const rollupSucceeded = await bundleRollup();
process.exit(rollupSucceeded ? 0 : 1);
})();
/**
* Generates all dist/*-worker.js files
*/
async function bundleRollup() {
console.log(`[bundle|rollup] Start bundling…`);
let success = true;
// We need to handle workers 1 by 1 to be able to generate umd bundles.
const entries = {
"parser-worker": getEntry("src/workers/parser/worker.js"),
"pretty-print-worker": getEntry("src/workers/pretty-print/worker.js"),
"search-worker": getEntry("src/workers/search/worker.js"),
};
for (const [entryName, input] of Object.entries(entries)) {
let bundle;
try {
// create a bundle
bundle = await rollup({
input: {
[entryName]: input,
},
plugins: [
commonjs({
transformMixedEsModules: true,
strictRequires: true,
}),
injectProcessEnv({ NODE_ENV: "production" }),
nodeResolve(),
// read-wasm.js is part of source-map and is only for Node environment.
// we need to ignore it, otherwise __dirname is inlined with the path the bundle
// is generated from, which makes the verify-bundle task fail
nodePolyfills({ exclude: [/read-wasm\.js/] }),
],
});
await bundle.write({
dir: bundlePath,
entryFileNames: "[name].js",
format: "umd",
});
} catch (error) {
success = false;
// do some error reporting
console.error("[bundle|rollup] Something went wrong.", error);
}
if (bundle) {
// closes the bundle
await bundle.close();
}
}
console.log(`[bundle|rollup] Done bundling`);
return success;
}