connectbase-client 6.3.1 → 6.3.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 (3) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/cli.js +71 -16
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
3
3
  본 SDK 의 모든 주요 변경사항을 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/) 형식으로 기록합니다.
4
4
  버전은 [Semantic Versioning](https://semver.org/lang/ko/) 을 따릅니다.
5
5
 
6
+ ## [6.3.3] - 2026-09-08
7
+
8
+ ### Fixed — `deploy` 가 방금 빌드한 직후에도 "배포 전 빌드를 먼저 실행하세요" 를 찍던 문제
9
+
10
+ package.json 에 build 스크립트만 있으면 무조건 경고했습니다. `pnpm run deploy`(= `vite build &&
11
+ connectbase deploy`) 처럼 빌드를 끝낸 직후 실행돼도 "먼저 빌드하라" 가 찍혀, 방금 올린 배포가
12
+ 낡은 것처럼 보였습니다. 명령도 `npm run build` 로 고정돼 있었습니다.
13
+
14
+ 이제 npm / pnpm / yarn / bun 이 스크립트 실행 시 넣어 주는 `npm_lifecycle_event` 가 package.json
15
+ scripts 의 이름이면(=그 스크립트 안에서 실행 중) 안내를 생략합니다. 빌드가 포함된 deploy
16
+ 스크립트가 있는데 직접 `connectbase deploy` 를 친 경우엔 그 스크립트를 쓰라고만 안내하고,
17
+ 그 외에는 감지된 패키지 매니저의 `run build` 명령으로 안내합니다.
18
+
19
+ ## [6.3.2] - 2026-09-08
20
+
21
+ ### Fixed — `init` 이 pnpm / yarn / bun 프로젝트에도 npm 명령을 안내하던 문제
22
+
23
+ `init` 의 마지막 안내(`npm install`, `npm run deploy`)와 package.json 에 넣는 deploy
24
+ 스크립트(`npm run build && …`)가 npm 으로 고정돼 있었습니다. pnpm 프로젝트에서 안내대로
25
+ `npm install` 을 치면 package-lock.json 이 새로 생기고 node_modules 가 pnpm 것과 갈립니다.
26
+
27
+ 이제 package.json 의 `packageManager` 필드, 없으면 잠금 파일(pnpm-lock.yaml / yarn.lock /
28
+ bun.lock / package-lock.json — 모노레포는 git 루트까지 올라가며 탐색)로 패키지 매니저를 알아내
29
+ 그 매니저의 명령을 안내하고 스크립트에도 씁니다. pnpm 은 `pnpm deploy` 가 워크스페이스
30
+ 배포 내장 명령이라 반드시 `pnpm run deploy` 로 안내합니다. `update` 의 새 버전 안내도
31
+ npm 과 pnpm 을 나란히 찍던 것을 감지된 매니저 하나로 바꿨습니다.
32
+
6
33
  ## [6.3.1] - 2026-09-08
7
34
 
8
35
  ### Fixed — `init` 의 웹 스토리지 생성 실패가 `[object Object]` 로만 찍히던 문제
package/dist/cli.js CHANGED
@@ -33,13 +33,16 @@ var cli_exports = {};
33
33
  __export(cli_exports, {
34
34
  TunnelConnectSelector: () => TunnelConnectSelector,
35
35
  apiErrorMessage: () => apiErrorMessage,
36
+ buildFirstHint: () => buildFirstHint,
36
37
  computeDeployDiff: () => computeDeployDiff,
38
+ detectPackageManager: () => detectPackageManager,
37
39
  getTunnelConnectCandidates: () => getTunnelConnectCandidates,
38
40
  guessMimeType: () => guessMimeType,
39
41
  isAllowedDeployExt: () => isAllowedDeployExt,
40
42
  isBinaryDeployExt: () => isBinaryDeployExt,
41
43
  makeRequest: () => makeRequest,
42
44
  normalizeRelativePath: () => normalizeRelativePath,
45
+ packageManagerCommands: () => packageManagerCommands,
43
46
  parseArgs: () => parseArgs,
44
47
  registerEndpointBinding: () => registerEndpointBinding,
45
48
  sha256Hex: () => sha256Hex,
@@ -148,7 +151,7 @@ function handleTunnelError(msg, appId, localPort) {
148
151
  }
149
152
 
150
153
  // src/cli.ts
151
- var VERSION = "6.3.1" ? "6.3.1" : getPackageVersion();
154
+ var VERSION = "6.3.3" ? "6.3.3" : getPackageVersion();
152
155
  var DEFAULT_BASE_URL = "https://api.connectbase.world";
153
156
  var colors = {
154
157
  reset: "\x1B[0m",
@@ -676,14 +679,8 @@ async function deploy(directory, config, isDev = false, deployOpts = {}) {
676
679
  if (fs2.existsSync(pkgPath)) {
677
680
  try {
678
681
  const pkg = JSON.parse(fs2.readFileSync(pkgPath, "utf-8"));
679
- if (pkg.scripts?.build) {
680
- warn(
681
- `\uBC30\uD3EC \uC804 \uBE4C\uB4DC\uB97C \uBA3C\uC800 \uC2E4\uD589\uD558\uC138\uC694: ${colors.cyan}npm run build && npx connectbase-client deploy${colors.reset}`
682
- );
683
- warn(
684
- `\uB610\uB294 package.json\uC5D0 deploy \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uB4F1\uB85D\uD558\uC138\uC694: ${colors.cyan}npx connectbase-client init${colors.reset}`
685
- );
686
- }
682
+ const pm = packageManagerCommands(detectPackageManager(process.cwd()));
683
+ for (const line of buildFirstHint(pkg, pm)) warn(line);
687
684
  } catch {
688
685
  }
689
686
  }
@@ -1583,7 +1580,8 @@ ${colors.blue}?${colors.reset} \uC120\uD0DD (\uBC88\uD638): `
1583
1580
  `);
1584
1581
  success(".connectbaserc \uC0DD\uC131 \uC644\uB8CC");
1585
1582
  addToGitignore(".connectbaserc");
1586
- const { needsInstall } = addDeployScript(deployDir);
1583
+ const pm = packageManagerCommands(detectPackageManager(cwd));
1584
+ const { needsInstall } = addDeployScript(deployDir, pm);
1587
1585
  await setupClaudeCode(secretKey, projectRoot, baseUrl);
1588
1586
  log(`
1589
1587
  ${colors.green}\uCD08\uAE30\uD654 \uC644\uB8CC!${colors.reset}
@@ -1591,10 +1589,10 @@ ${colors.green}\uCD08\uAE30\uD654 \uC644\uB8CC!${colors.reset}
1591
1589
  log(`${colors.dim}\uBC30\uD3EC\uD558\uB824\uBA74:${colors.reset}`);
1592
1590
  if (needsInstall) {
1593
1591
  log(
1594
- ` ${colors.cyan}npm install${colors.reset} ${colors.dim}# connectbase-client (CLI \uD3EC\uD568) \uC124\uCE58${colors.reset}`
1592
+ ` ${colors.cyan}${pm.install}${colors.reset} ${colors.dim}# connectbase-client (CLI \uD3EC\uD568) \uC124\uCE58${colors.reset}`
1595
1593
  );
1596
1594
  }
1597
- log(` ${colors.cyan}npm run deploy${colors.reset}`);
1595
+ log(` ${colors.cyan}${pm.run("deploy")}${colors.reset}`);
1598
1596
  log(`
1599
1597
  ${colors.dim}Claude Code\uC5D0\uC11C MCP\uAC00 \uC790\uB3D9 \uC5F0\uACB0\uB429\uB2C8\uB2E4${colors.reset}
1600
1598
  `);
@@ -1644,7 +1642,61 @@ ${entry}
1644
1642
  success(".gitignore \uC0DD\uC131 \uC644\uB8CC");
1645
1643
  }
1646
1644
  }
1647
- function addDeployScript(deployDir) {
1645
+ function buildFirstHint(pkg, pm, lifecycleEvent = process.env.npm_lifecycle_event) {
1646
+ const scripts = pkg?.scripts ?? {};
1647
+ if (!scripts.build) return [];
1648
+ if (lifecycleEvent && Object.keys(scripts).includes(lifecycleEvent)) {
1649
+ return [];
1650
+ }
1651
+ if (typeof scripts.deploy === "string" && scripts.deploy.includes("build")) {
1652
+ return [
1653
+ `\uBE4C\uB4DC\uAE4C\uC9C0 \uD55C \uBC88\uC5D0 \uD558\uB824\uBA74 deploy \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uC4F0\uC138\uC694: ${pm.run("deploy")}`
1654
+ ];
1655
+ }
1656
+ return [
1657
+ `\uBC30\uD3EC \uC804 \uBE4C\uB4DC\uB97C \uBA3C\uC800 \uC2E4\uD589\uD558\uC138\uC694: ${pm.run("build")} && npx connectbase-client deploy`,
1658
+ "\uB610\uB294 package.json\uC5D0 deploy \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uB4F1\uB85D\uD558\uC138\uC694: npx connectbase-client init"
1659
+ ];
1660
+ }
1661
+ function detectPackageManager(startDir = process.cwd()) {
1662
+ try {
1663
+ const pkg = JSON.parse(
1664
+ fs2.readFileSync(path2.join(startDir, "package.json"), "utf-8")
1665
+ );
1666
+ const declared = typeof pkg.packageManager === "string" ? pkg.packageManager.split("@")[0] : "";
1667
+ if (declared === "npm" || declared === "pnpm" || declared === "yarn" || declared === "bun") {
1668
+ return declared;
1669
+ }
1670
+ } catch {
1671
+ }
1672
+ const lockfiles = [
1673
+ ["pnpm-lock.yaml", "pnpm"],
1674
+ ["yarn.lock", "yarn"],
1675
+ ["bun.lockb", "bun"],
1676
+ ["bun.lock", "bun"],
1677
+ ["package-lock.json", "npm"],
1678
+ ["npm-shrinkwrap.json", "npm"]
1679
+ ];
1680
+ let dir = path2.resolve(startDir);
1681
+ for (; ; ) {
1682
+ for (const [file, pm] of lockfiles) {
1683
+ if (fs2.existsSync(path2.join(dir, file))) return pm;
1684
+ }
1685
+ if (fs2.existsSync(path2.join(dir, ".git"))) break;
1686
+ const parent = path2.dirname(dir);
1687
+ if (parent === dir) break;
1688
+ dir = parent;
1689
+ }
1690
+ return "npm";
1691
+ }
1692
+ function packageManagerCommands(pm) {
1693
+ return {
1694
+ install: `${pm} install`,
1695
+ run: (script) => `${pm} run ${script}`,
1696
+ addLatest: (name) => pm === "npm" ? `npm install ${name}@latest` : `${pm} add ${name}@latest`
1697
+ };
1698
+ }
1699
+ function addDeployScript(deployDir, pm) {
1648
1700
  const pkgPath = path2.join(process.cwd(), "package.json");
1649
1701
  if (!fs2.existsSync(pkgPath)) {
1650
1702
  warn("package.json\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC5B4 deploy \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uCD94\uAC00\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4");
@@ -1666,7 +1718,7 @@ function addDeployScript(deployDir) {
1666
1718
  );
1667
1719
  } else {
1668
1720
  const deployCmd = `connectbase deploy ${deployDir}`;
1669
- pkg.scripts.deploy = pkg.scripts.build ? `npm run build && ${deployCmd}` : deployCmd;
1721
+ pkg.scripts.deploy = pkg.scripts.build ? `${pm.run("build")} && ${deployCmd}` : deployCmd;
1670
1722
  success("package.json\uC5D0 deploy \uC2A4\uD06C\uB9BD\uD2B8 \uCD94\uAC00 \uC644\uB8CC");
1671
1723
  }
1672
1724
  fs2.writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}
@@ -2146,10 +2198,10 @@ ${colors.cyan}ConnectBase Update${colors.reset}
2146
2198
  warn(
2147
2199
  `\uC0C8 \uBC84\uC804\uC774 \uC788\uC2B5\uB2C8\uB2E4: v${VERSION} \u2192 v${colors.green}${latestVersion}${colors.reset}`
2148
2200
  );
2201
+ const pm = packageManagerCommands(detectPackageManager(projectRoot));
2149
2202
  log(
2150
- ` ${colors.cyan}npm install connectbase-client@latest${colors.reset}`
2203
+ ` ${colors.cyan}${pm.addLatest("connectbase-client")}${colors.reset}`
2151
2204
  );
2152
- log(` ${colors.cyan}pnpm add connectbase-client@latest${colors.reset}`);
2153
2205
  log("");
2154
2206
  }
2155
2207
  } else {
@@ -3771,13 +3823,16 @@ main().catch((err) => {
3771
3823
  0 && (module.exports = {
3772
3824
  TunnelConnectSelector,
3773
3825
  apiErrorMessage,
3826
+ buildFirstHint,
3774
3827
  computeDeployDiff,
3828
+ detectPackageManager,
3775
3829
  getTunnelConnectCandidates,
3776
3830
  guessMimeType,
3777
3831
  isAllowedDeployExt,
3778
3832
  isBinaryDeployExt,
3779
3833
  makeRequest,
3780
3834
  normalizeRelativePath,
3835
+ packageManagerCommands,
3781
3836
  parseArgs,
3782
3837
  registerEndpointBinding,
3783
3838
  sha256Hex,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "connectbase-client",
3
- "version": "6.3.1",
3
+ "version": "6.3.3",
4
4
  "description": "Connect Base JavaScript/TypeScript SDK for browser and Node.js",
5
5
  "repository": {
6
6
  "type": "git",