86 lines
3.8 KiB
JavaScript
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();
|