Files
2026-07-13 12:25:07 +08:00

86 lines
3.8 KiB
JavaScript

// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
// ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
// ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
// ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
// ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
// ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
// ┃ Copyright (c) 2017, the Perspective Authors. ┃
// ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
// ┃ This file is part of the Perspective library, distributed under the terms ┃
// ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
import { NodeModulesExternal } from "@perspective-dev/esbuild-plugin/external.js";
import { build } from "@perspective-dev/esbuild-plugin/build.js";
import { bundle as bundleCss } from "lightningcss";
import * as fs from "node:fs";
import { inlineUrlVisitor } from "@perspective-dev/viewer/tools.mjs";
import "zx/globals";
const BUILD = [
{
define: {
global: "window",
},
entryPoints: ["src/ts/index.ts"],
plugins: [NodeModulesExternal()],
format: "esm",
loader: {
".css": "text",
".html": "text",
},
outfile: "dist/esm/perspective-viewer-datagrid.js",
},
{
define: {
global: "window",
},
entryPoints: ["src/ts/index.ts"],
plugins: [],
format: "esm",
loader: {
".css": "text",
".html": "text",
},
outfile: "dist/cdn/perspective-viewer-datagrid.js",
},
];
async function compile_css() {
fs.mkdirSync("dist/css", { recursive: true });
const { code: datagridCode } = bundleCss({
filename: "./src/css/perspective-viewer-datagrid.css",
minify: true,
visitor: inlineUrlVisitor("./src/css/perspective-viewer-datagrid.css"),
});
fs.writeFileSync("dist/css/perspective-viewer-datagrid.css", datagridCode);
const { code: toolbarCode } = bundleCss({
filename: "./src/css/toolbar.css",
minify: true,
visitor: inlineUrlVisitor("./src/css/toolbar.css"),
});
fs.writeFileSync(
"dist/css/perspective-viewer-datagrid-toolbar.css",
toolbarCode,
);
}
async function build_all() {
await compile_css();
await Promise.all(BUILD.map(build)).catch(() => process.exit(1));
try {
await $`tsc --project ./tsconfig.json`.stdio(
"inherit",
"inherit",
"inherit",
);
} catch (e) {
console.error(e.stdout);
process.exit(1);
}
}
build_all();