fmode-code-lit.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/env node
  2. /**
  3. * fmode-code-lit CLI
  4. * 用法:
  5. * npx @fmode/skill-code-lit install # 装技能到 ~/.claude/skills/(默认)
  6. * npx @fmode/skill-code-lit workspace # 装技能到 ./.claude/skills/
  7. * npx @fmode/skill-code-lit check # 校验安装
  8. * npx @fmode/skill-code-lit scaffold <dir> --project <name> # 生成无构建 Lit 项目骨架
  9. * npx @fmode/skill-code-lit new <component|service|page> <name>
  10. * npx @fmode/skill-code-lit rules [dir] # 把前端规则装入目标项目 ./.claude/rules/
  11. */
  12. const { spawnSync } = require('node:child_process');
  13. const path = require('node:path');
  14. const SCRIPTS = path.join(__dirname, '..', 'scripts');
  15. const [cmd = 'install', ...rest] = process.argv.slice(2);
  16. const MAP = {
  17. install: 'install.mjs',
  18. workspace: 'install.mjs',
  19. check: 'install.mjs',
  20. scaffold: 'scaffold.mjs',
  21. new: 'new.mjs',
  22. rules: 'install-rules.mjs',
  23. };
  24. const script = MAP[cmd];
  25. if (!script) {
  26. console.error(`未知命令:${cmd}\n可用:${Object.keys(MAP).join(', ')}`);
  27. process.exit(2);
  28. }
  29. // workspace 需作为首参透传给 install.mjs(install.mjs 默认 install)
  30. const argv = (cmd === 'workspace' || cmd === 'install' || cmd === 'check')
  31. ? [path.join(SCRIPTS, script), cmd, ...rest]
  32. : [path.join(SCRIPTS, script), ...rest];
  33. const r = spawnSync(process.execPath, argv, { stdio: 'inherit' });
  34. process.exit(r.status ?? 1);