pansetup 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/bin/cli.js +7 -4
  2. package/package.json +1 -1
package/bin/cli.js CHANGED
@@ -45,9 +45,11 @@ const delay = (ms) => new Promise(r => setTimeout(r, ms));
45
45
  function installWithProgress(pkgName) {
46
46
  return new Promise((resolve, reject) => {
47
47
  const npmCmd = IS_WIN ? "npm.cmd" : "npm";
48
- const child = spawn(npmCmd, ["install", "-g", pkgName, "--prefer-online"], { stdio: "ignore" });
48
+ const child = spawn(npmCmd, ["install", "-g", pkgName, "--prefer-online"], { stdio: ["ignore", "ignore", "pipe"], shell: IS_WIN });
49
49
  const frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
50
50
  let i = 0; const startTime = Date.now();
51
+ let errBuf = "";
52
+ child.stderr.on("data", (d) => { errBuf += d.toString(); });
51
53
  const timer = setInterval(() => {
52
54
  const elapsed = Math.round((Date.now() - startTime) / 1000);
53
55
  process.stdout.write(`\r ${c.cyan}拼命下载 ${pkgName} 中 ${frames[i]} (耗时: ${elapsed}s)...${c.reset} `);
@@ -55,7 +57,8 @@ function installWithProgress(pkgName) {
55
57
  }, 100);
56
58
  child.on("close", (code) => {
57
59
  clearInterval(timer); process.stdout.write("\r" + " ".repeat(60) + "\r");
58
- if (code === 0) resolve(); else reject(new Error(`Exit code ${code}`));
60
+ if (code === 0) resolve();
61
+ else reject(new Error(errBuf.trim() || `Exit code ${code}`));
59
62
  });
60
63
  });
61
64
  }
@@ -77,7 +80,7 @@ async function main() {
77
80
  catch (e) {
78
81
  log.warn(`未检测到 9router,正在自动安装全局包...`);
79
82
  try { await installWithProgress("9router"); log.ok(`9router 安装成功!`); }
80
- catch (err) { log.error(`9router 安装失败!`); process.exit(1); }
83
+ catch (err) { log.error(`9router 安装失败!\n ${c.gray}原因: ${err.message.replace(/\n/g, "\n ")}${c.reset}`); process.exit(1); }
81
84
  }
82
85
 
83
86
  try { execSync("claude --version", { stdio: "ignore" }); log.ok(`Claude Code 已就绪。`); }
@@ -183,7 +186,7 @@ async function main() {
183
186
 
184
187
  if (IS_WIN) {
185
188
  log.info(`正在拉起 9Router...`);
186
- const child = spawn("cmd.exe", ["/c", "start", "cmd.exe", "/k", "9router"], { detached: true, stdio: "ignore" });
189
+ const child = spawn("cmd.exe", ["/c", "start", "cmd.exe", "/k", "9router"], { detached: true, stdio: "ignore", shell: true });
187
190
  child.unref();
188
191
  }
189
192
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pansetup",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "9Router & Claude Code 一键部署工具",
5
5
  "bin": {
6
6
  "pansetup": "bin/cli.js"