From 04427a98d8b43ea201c8f2c786e1890a1d74b77b Mon Sep 17 00:00:00 2001 From: digua Date: Wed, 20 May 2026 22:31:27 +0800 Subject: [PATCH] chore(cli): prepare npm release docs --- apps/cli/package.json | 4 +++- apps/cli/scripts/clean-release-docs.mjs | 13 +++++++++++++ apps/cli/scripts/sync-release-docs.mjs | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 apps/cli/scripts/clean-release-docs.mjs create mode 100644 apps/cli/scripts/sync-release-docs.mjs diff --git a/apps/cli/package.json b/apps/cli/package.json index 0e6e2da3..a4fc8171 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "description": "ChatLab CLI & Service - Chat history analysis tool", "bin": { - "chatlab": "./bin/chatlab.mjs" + "chatlab": "bin/chatlab.mjs" }, "main": "./dist/index.mjs", "files": [ @@ -45,6 +45,8 @@ "ensure-native": "node scripts/ensure-native.mjs", "rebuild-native": "bash scripts/rebuild-native.sh", "rebuild-sqlite": "npm rebuild better-sqlite3", + "prepack": "node scripts/sync-release-docs.mjs", + "postpack": "node scripts/clean-release-docs.mjs", "prepublishOnly": "pnpm run build" }, "dependencies": { diff --git a/apps/cli/scripts/clean-release-docs.mjs b/apps/cli/scripts/clean-release-docs.mjs new file mode 100644 index 00000000..9dcc6a67 --- /dev/null +++ b/apps/cli/scripts/clean-release-docs.mjs @@ -0,0 +1,13 @@ +import { rm } from 'node:fs/promises' +import { resolve } from 'node:path' + +const packageRoot = resolve(import.meta.dirname, '..') +const generatedFiles = ['README.md', 'LICENSE'] + +await Promise.all( + generatedFiles.map((file) => + rm(resolve(packageRoot, file), { force: true }).catch((error) => { + console.warn(`[release-docs] Failed to remove ${file}: ${error.message}`) + }) + ) +) diff --git a/apps/cli/scripts/sync-release-docs.mjs b/apps/cli/scripts/sync-release-docs.mjs new file mode 100644 index 00000000..4a18d66b --- /dev/null +++ b/apps/cli/scripts/sync-release-docs.mjs @@ -0,0 +1,14 @@ +import { copyFile } from 'node:fs/promises' +import { resolve } from 'node:path' + +const packageRoot = resolve(import.meta.dirname, '..') +const repositoryRoot = resolve(packageRoot, '../..') + +const releaseDocs = [ + ['README.md', 'README.md'], + ['LICENSE', 'LICENSE'], +] + +for (const [source, target] of releaseDocs) { + await copyFile(resolve(repositoryRoot, source), resolve(packageRoot, target)) +}