···
async function build(name, entry) {
const outfile = path.join("./dist", name + ".js");
···
const nodeDependencies = ["glob"];
const ignoredExternal = name === "web-preload" ? nodeDependencies : [];
···
external: [...ignoredExternal, ...external],
···
-
src: `./packages/core-extensions/src/${ext}/manifest.json`,
-
dest: `./dist/core-extensions/${ext}/manifest.json`
"commonjs-variable-in-esm": "verbose"
···
+
let lastMessages = new Set();
+
/** @type {import("esbuild").Plugin} */
+
const deduplicatedLogging = {
+
name: "deduplicated-logging",
+
build.onEnd(async (result) => {
+
const formatted = await Promise.all([
+
esbuild.formatMessages(result.warnings, { kind: "warning", color: true }),
+
esbuild.formatMessages(result.errors, { kind: "error", color: true })
+
]).then((a) => a.flat());
+
// console.log(formatted);
+
for (const message of formatted) {
+
if (lastMessages.has(message)) continue;
+
lastMessages.add(message);
+
console.log(message.trim());
+
const timeFormatter = new Intl.DateTimeFormat(undefined, {
+
/** @type {import("esbuild").Plugin} */
+
const taggedBuildLog = (tag) => ({
+
build.onEnd((result) => {
+
console.log(`[${timeFormatter.format(new Date())}] [${tag}] build finished`);
async function build(name, entry) {
const outfile = path.join("./dist", name + ".js");
···
const nodeDependencies = ["glob"];
const ignoredExternal = name === "web-preload" ? nodeDependencies : [];
+
/** @type {import("esbuild").BuildOptions} */
···
external: [...ignoredExternal, ...external],
···
"commonjs-variable-in-esm": "verbose"
+
...copyManifest ? [copyStaticFiles({
+
src: `./packages/core-extensions/src/${ext}/manifest.json`,
+
dest: `./dist/core-extensions/${ext}/manifest.json`
+
taggedBuildLog(`ext/${ext}`)