b3a7f98e5a
CI / E2E Cloudflare (4/8) (push) Failing after 0s
CI / E2E Cloudflare (8/8) (push) Failing after 1s
CI / Lint (push) Failing after 1s
Auto Extract / Extract (push) Failing after 4s
CI / Version Check (push) Failing after 9s
CI / Integration Tests (push) Failing after 1s
CI / E2E tests (1/8) (push) Failing after 1s
CI / E2E tests (2/8) (push) Failing after 2s
CI / E2E tests (3/8) (push) Failing after 2s
CI / Browser Tests (push) Failing after 1s
CI / E2E tests (5/8) (push) Failing after 1s
CI / E2E Cloudflare (2/8) (push) Failing after 2s
CI / Typecheck (push) Failing after 1s
CI / Changeset Validation (push) Failing after 2s
CI / E2E Cloudflare (5/8) (push) Failing after 1s
CI / E2E Cloudflare (6/8) (push) Failing after 1s
CI / E2E Cloudflare (7/8) (push) Failing after 1s
CodeQL / Analyze (javascript-typescript) (push) Failing after 1s
Format / Format (push) Failing after 0s
CodeQL / Analyze (actions) (push) Failing after 4s
CI / E2E tests (4/8) (push) Failing after 1s
CI / E2E tests (6/8) (push) Failing after 1s
CI / E2E tests (7/8) (push) Failing after 2s
CI / E2E tests (8/8) (push) Failing after 1s
CI / E2E Cloudflare (1/8) (push) Failing after 1s
CI / E2E Cloudflare (3/8) (push) Failing after 2s
Preview Releases / Publish Preview (push) Failing after 0s
zizmor / Run zizmor (push) Failing after 1s
Release / Release (push) Failing after 2s
CI / Smoke Tests (push) Failing after 5m36s
CI / Tests (push) Failing after 6m36s
Release / Sync Templates (push) Has been skipped
CI / E2E Tests (push) Has been cancelled
70 lines
1.8 KiB
TypeScript
70 lines
1.8 KiB
TypeScript
/**
|
|
* `emdash-plugin build`
|
|
*
|
|
* Thin citty wrapper around `buildPlugin` from `./api.js`. Produces the
|
|
* on-disk dist artifacts for an npm-installed sandboxed plugin:
|
|
*
|
|
* - `dist/plugin.mjs` (+ `.d.mts`) — runtime bytes (hooks + routes).
|
|
* - `dist/index.mjs` (+ `.d.mts`) — descriptor module, bare default export.
|
|
* - `dist/manifest.json` — normalised manifest, kept in sync.
|
|
*
|
|
* Plugin authors run this from their package's `prepublishOnly` (or a
|
|
* `pnpm build` script that delegates). Bundling for the registry (the
|
|
* tarball form) is a separate command — see `emdash-plugin bundle`.
|
|
*/
|
|
|
|
import { defineCommand } from "citty";
|
|
import consola from "consola";
|
|
import pc from "picocolors";
|
|
|
|
import { BuildError, buildPlugin, type BuildLogger } from "./api.js";
|
|
|
|
export const buildCommand = defineCommand({
|
|
meta: {
|
|
name: "build",
|
|
description: "Build a sandboxed plugin's npm distribution artifacts",
|
|
},
|
|
args: {
|
|
dir: {
|
|
type: "string",
|
|
description: "Plugin directory (default: current directory)",
|
|
default: process.cwd(),
|
|
},
|
|
"out-dir": {
|
|
type: "string",
|
|
alias: "o",
|
|
description: "Output directory (default: ./dist)",
|
|
default: "dist",
|
|
},
|
|
},
|
|
async run({ args }) {
|
|
const logger: BuildLogger = {
|
|
start: (m) => consola.start(m),
|
|
info: (m) => consola.info(m),
|
|
success: (m) => consola.success(m),
|
|
warn: (m) => consola.warn(m),
|
|
};
|
|
|
|
let result;
|
|
try {
|
|
result = await buildPlugin({
|
|
dir: args.dir,
|
|
outDir: args["out-dir"],
|
|
logger,
|
|
});
|
|
} catch (error) {
|
|
if (error instanceof BuildError) {
|
|
consola.error(error.message);
|
|
process.exit(1);
|
|
}
|
|
throw error;
|
|
}
|
|
|
|
console.log();
|
|
consola.info("Output:");
|
|
console.log(` ${pc.cyan(result.files.descriptor)}`);
|
|
console.log(` ${pc.cyan(result.files.runtime)}`);
|
|
console.log(` ${pc.cyan(result.files.manifestJson)}`);
|
|
},
|
|
});
|