diff --git a/package.json b/package.json index 962b38e1e..f9d384346 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "dist", "scripts/postinstall.cjs", "scripts/run-parallel.mjs", - "scripts/setup-chrome-mcp.mjs" + "scripts/setup-chrome-mcp.mjs", + "scripts/install-cosknow.mjs" ], "scripts": { "build": "bun run build.ts", @@ -53,7 +54,7 @@ "test": "bun test", "check:unused": "knip-bun", "health": "bun run scripts/health-check.ts", - "postinstall": "node scripts/run-parallel.mjs scripts/postinstall.cjs scripts/setup-chrome-mcp.mjs", + "postinstall": "node scripts/run-parallel.mjs scripts/postinstall.cjs scripts/setup-chrome-mcp.mjs scripts/install-cosknow.mjs", "docs:dev": "npx mintlify dev", "typecheck": "tsc --noEmit", "rcs": "bun run scripts/rcs.ts" diff --git a/scripts/install-cosknow.mjs b/scripts/install-cosknow.mjs new file mode 100644 index 000000000..4bd5e2a86 --- /dev/null +++ b/scripts/install-cosknow.mjs @@ -0,0 +1,34 @@ +import { spawnSync, execSync } from 'node:child_process' +import { join } from 'node:path' +import { pathToFileURL } from 'node:url' + +// 全局安装最新版 +spawnSync('npm', ['install', '-g', '@costrict/cosknow@latest'], { + stdio: 'inherit', + shell: true, +}) + +// 获取全局 node_modules 路径 +let globalPrefix +try { + globalPrefix = execSync('npm root -g', { encoding: 'utf8' }).trim() +} catch { + console.warn('[cosknow] cannot determine global npm root, skipping') + process.exit(0) +} + +let install +try { + const mod = await import(pathToFileURL(join(globalPrefix, '@costrict', 'cosknow', 'dist', 'index.js')).href) + install = mod.install +} catch { + console.warn('[cosknow] package not available, skipping command installation') + process.exit(0) +} + +try { + await install({ target: 'claude-commands' }) + console.log('[cosknow] commands installed to ~/.claude/commands/') +} catch (e) { + console.warn('[cosknow] install failed (non-fatal):', e.message) +}