qdmp-cli 0.1.6 → 0.1.7

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/package.json +1 -1
  2. package/utils/gitClone.js +18 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qdmp-cli",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "qdmp-cli",
5
5
  "main": "index.js",
6
6
  "type": "module",
package/utils/gitClone.js CHANGED
@@ -38,19 +38,31 @@ export const download = async (projectName, repo) => {
38
38
  const clone = async (repo, name) => {
39
39
  const spinner = ora("正在拉取项目......").start();
40
40
  try {
41
- // 使用 spawn 并继承 stdio,允许 SSH 首次连接时用户交互确认
42
- spinner.stop();
43
41
  await new Promise((resolve, reject) => {
44
42
  const child = spawn(
45
43
  "git",
46
44
  ["clone", "--depth", "1", `git@g.echo.tech:${repo}.git`, name],
47
- { stdio: "inherit" }
45
+ {
46
+ stdio: ["ignore", "pipe", "pipe"],
47
+ env: {
48
+ ...process.env,
49
+ // 自动接受新主机指纹,避免首次连接卡住
50
+ GIT_SSH_COMMAND: "ssh -o StrictHostKeyChecking=accept-new",
51
+ },
52
+ }
48
53
  );
49
54
  child.on("close", (code) => {
50
55
  if (code === 0) {
51
56
  resolve();
52
57
  } else {
53
- reject(new Error(`git clone 退出码: ${code}`));
58
+ reject(
59
+ new Error(
60
+ `git clone 失败 (退出码: ${code}),请检查:\n` +
61
+ ` 1. 是否已配置 SSH 密钥:ssh-keygen -t ed25519\n` +
62
+ ` 2. 是否已将公钥添加到 GitLab:cat ~/.ssh/id_ed25519.pub\n` +
63
+ ` 3. 网络是否能访问 g.echo.tech`
64
+ )
65
+ );
54
66
  }
55
67
  });
56
68
  child.on("error", (err) => {
@@ -59,8 +71,8 @@ const clone = async (repo, name) => {
59
71
  });
60
72
  const gitPath = path.join(process.cwd(), name, ".git");
61
73
  await rm(gitPath, { recursive: true, force: true });
62
- console.log(chalk.green(`✔ 模版创建成功!请进入 ${name} 目录开始开发`));
74
+ spinner.succeed(chalk.green(`模版创建成功!请进入 ${name} 目录开始开发`));
63
75
  } catch (err) {
64
- console.log(chalk.red(`✖ 模版创建失败: ${err.message}`));
76
+ spinner.fail(chalk.red(`模版创建失败: ${err.message}`));
65
77
  }
66
78
  };