@lark-apaas/openclaw-dev-cli 0.1.2 → 0.1.4

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/README.md +86 -0
  2. package/dist/index.js +22 -22
  3. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,86 @@
1
+ # @lark-apaas/openclaw-dev-cli
2
+
3
+ OpenClaw 应用开发 CLI,管理应用的创建、关联和部署。
4
+
5
+ ## 安装
6
+
7
+ 无需安装,通过 npx 直接使用:
8
+
9
+ ```bash
10
+ npx --yes @lark-apaas/openclaw-dev-cli <command> [options]
11
+ ```
12
+
13
+ ## 命令
14
+
15
+ ### init — 初始化应用
16
+
17
+ ```bash
18
+ # 从模板创建新应用
19
+ npx --yes @lark-apaas/openclaw-dev-cli init --template <html|nextjs-static|nextjs> --dir <path>
20
+
21
+ # clone 后初始化
22
+ npx --yes @lark-apaas/openclaw-dev-cli init --dir <path>
23
+ ```
24
+
25
+ | 选项 | 说明 | 默认值 |
26
+ |------|------|--------|
27
+ | `--dir <path>` | 项目目录 | `.` |
28
+ | `--template <template>` | 模板类型(无代码时必须) | - |
29
+ | `--title <title>` | 应用名称 | 目录名 |
30
+ | `--description <desc>` | 应用描述 | `""` |
31
+ | `--template-version <version>` | 模板包版本 | `latest` |
32
+ | `--skip-install` | 跳过依赖安装 | `false` |
33
+
34
+ ### link — 关联已有项目
35
+
36
+ ```bash
37
+ npx --yes @lark-apaas/openclaw-dev-cli link --app-id <id> --template <type>
38
+ ```
39
+
40
+ | 选项 | 说明 | 默认值 |
41
+ |------|------|--------|
42
+ | `--dir <path>` | 项目目录 | `.` |
43
+ | `--app-id <id>` | 要关联的应用 ID | 不传则自动注册 |
44
+ | `--template <template>` | 技术栈类型 | 从 package.json mclaw 字段读取 |
45
+ | `--title <title>` | 应用名称 | 目录名 |
46
+ | `--description <desc>` | 应用描述 | `""` |
47
+
48
+ ### deploy — 部署应用
49
+
50
+ ```bash
51
+ npx --yes @lark-apaas/openclaw-dev-cli deploy
52
+ ```
53
+
54
+ | 选项 | 说明 | 默认值 |
55
+ |------|------|--------|
56
+ | `--dir <path>` | 项目目录 | `.` |
57
+ | `--skip-build` | 跳过构建 | `false` |
58
+
59
+ ## 全局选项
60
+
61
+ | 选项 | 说明 |
62
+ |------|------|
63
+ | `--canary <env>` | 设置 canary 泳道 |
64
+ | `-V, --version` | 输出版本号 |
65
+
66
+ ## 支持的技术栈
67
+
68
+ | 模板 | 说明 |
69
+ |------|------|
70
+ | `html` | 纯 HTML + Tailwind CDN |
71
+ | `nextjs-static` | Next.js Pages Router,静态导出 |
72
+ | `nextjs` | Next.js App Router 全栈 |
73
+
74
+ ## 环境配置
75
+
76
+ 在项目目录下创建 `.env` 文件:
77
+
78
+ ```
79
+ FORCE_AUTHN_INNERAPI_DOMAIN=<API域名>
80
+ FORCE_AUTHN_ACCESS_KEY=<AK>
81
+ FORCE_AUTHN_ACCESS_SECRET=<SK>
82
+ ```
83
+
84
+ ## License
85
+
86
+ MIT
package/dist/index.js CHANGED
@@ -7288,7 +7288,7 @@ var initCommand = {
7288
7288
  const hasPackageJson = import_node_fs9.default.existsSync(import_node_path12.default.join(projectDir, "package.json"));
7289
7289
  const existingMeta = readSparkMeta(projectDir);
7290
7290
  const title = options.title ?? import_node_path12.default.basename(projectDir);
7291
- let stackVersion = existingMeta.stack_version;
7291
+ let stackVersion = existingMeta.stackVersion;
7292
7292
  if (!hasPackageJson) {
7293
7293
  if (!options.template) {
7294
7294
  throw new Error(
@@ -7325,7 +7325,7 @@ Available: ${TEMPLATE_TYPES.join(", ")}`
7325
7325
  "Cannot determine stack type. Please provide --template or ensure package.json has mclaw.stack field."
7326
7326
  );
7327
7327
  }
7328
- let appId = options.appId ?? existingMeta.app_id;
7328
+ let appId = options.appId ?? existingMeta.appId;
7329
7329
  if (!appId) {
7330
7330
  const result = await createSubApp({
7331
7331
  name: title,
@@ -7337,13 +7337,13 @@ Available: ${TEMPLATE_TYPES.join(", ")}`
7337
7337
  console.log(`Using existing app_id: ${appId}`);
7338
7338
  }
7339
7339
  writeSparkMeta(projectDir, {
7340
- app_id: appId,
7340
+ appId,
7341
7341
  stack,
7342
- stack_version: stackVersion ?? "0.1.0"
7342
+ stackVersion: stackVersion ?? "0.1.0"
7343
7343
  });
7344
7344
  if (!options.skipInstall) {
7345
7345
  console.log("\nInstalling dependencies...");
7346
- (0, import_node_child_process2.execSync)("pnpm install", {
7346
+ (0, import_node_child_process2.execSync)("npm install", {
7347
7347
  cwd: projectDir,
7348
7348
  stdio: "inherit"
7349
7349
  });
@@ -7399,9 +7399,9 @@ Available: ${TEMPLATE_TYPES.join(", ")}`
7399
7399
  console.log(`Using app_id: ${appId}`);
7400
7400
  }
7401
7401
  writeSparkMeta(projectDir, {
7402
- app_id: appId,
7402
+ appId,
7403
7403
  stack,
7404
- stack_version: stackVersion
7404
+ stackVersion
7405
7405
  });
7406
7406
  if (import_node_fs10.default.existsSync(pkgPath)) {
7407
7407
  const pkg = JSON.parse(import_node_fs10.default.readFileSync(pkgPath, "utf-8"));
@@ -7555,28 +7555,28 @@ var deployCommand = {
7555
7555
  throw new Error('.spark/meta.json not found. Run "mclaw-dev init" first.');
7556
7556
  }
7557
7557
  const meta = JSON.parse(import_node_fs13.default.readFileSync(metaPath, "utf-8"));
7558
- if (!meta.app_id || !meta.stack) {
7558
+ if (!meta.appId || !meta.stack) {
7559
7559
  throw new Error('.spark/meta.json is incomplete. Run "mclaw-dev init" to fix.');
7560
7560
  }
7561
- const publishResult = await createPublish(meta.app_id);
7561
+ const publishResult = await createPublish(meta.appId);
7562
7562
  console.log(`Version: ${publishResult.version}, PublishID: ${publishResult.publishID}`);
7563
7563
  console.log("\nPreparing upload credentials...");
7564
- const artifactCredential = await genArtifactUploadCredential(meta.app_id, String(publishResult.version));
7565
- const bucketId = await getDefaultBucketId(meta.app_id);
7566
- const preUploadResult = await preUploadStatic(meta.app_id, bucketId);
7564
+ const artifactCredential = await genArtifactUploadCredential(meta.appId, String(publishResult.version));
7565
+ const bucketId = await getDefaultBucketId(meta.appId);
7566
+ const preUploadResult = await preUploadStatic(meta.appId, bucketId);
7567
7567
  console.log(`Static prefix: ${preUploadResult.downloadURLPrefix}`);
7568
7568
  if (!options.skipBuild) {
7569
- const cdnDomain = buildCdnDomain(meta.app_id, publishResult.version);
7569
+ const cdnDomain = buildCdnDomain(meta.appId, publishResult.version);
7570
7570
  const buildEnv = {
7571
7571
  ...process.env,
7572
- MCLAW_APP_ID: meta.app_id,
7572
+ MCLAW_APP_ID: meta.appId,
7573
7573
  MCLAW_VERSION: String(publishResult.version),
7574
7574
  MCLAW_STACK: meta.stack,
7575
7575
  MCLAW_CDN_DOMAIN: cdnDomain,
7576
7576
  MCLAW_STATIC_PREFIX: preUploadResult.downloadURLPrefix
7577
7577
  };
7578
7578
  console.log("\nBuilding...");
7579
- console.log(` MCLAW_APP_ID=${meta.app_id}`);
7579
+ console.log(` MCLAW_APP_ID=${meta.appId}`);
7580
7580
  console.log(` MCLAW_VERSION=${publishResult.version}`);
7581
7581
  console.log(` MCLAW_STACK=${meta.stack}`);
7582
7582
  console.log(` MCLAW_CDN_DOMAIN=${cdnDomain}`);
@@ -7591,7 +7591,7 @@ var deployCommand = {
7591
7591
  console.log("Build output validated.");
7592
7592
  uploadOutput({
7593
7593
  projectDir,
7594
- appId: meta.app_id,
7594
+ appId: meta.appId,
7595
7595
  version: publishResult.version,
7596
7596
  validated,
7597
7597
  artifactCredential,
@@ -7599,7 +7599,7 @@ var deployCommand = {
7599
7599
  });
7600
7600
  if (validated.hasOutputStatic) {
7601
7601
  console.log("\nNotifying upload complete...");
7602
- const callbackResult = await callbackStatic(meta.app_id, bucketId, preUploadResult.uploadID);
7602
+ const callbackResult = await callbackStatic(meta.appId, bucketId, preUploadResult.uploadID);
7603
7603
  console.log(`Uploaded ${callbackResult.attachments.length} static files.`);
7604
7604
  }
7605
7605
  let routesConfig;
@@ -7608,18 +7608,18 @@ var deployCommand = {
7608
7608
  routesConfig = import_node_fs13.default.readFileSync(routesPath, "utf-8");
7609
7609
  console.log("Found routes.json, including in publish.");
7610
7610
  }
7611
- const publishUpdateResult = await updatePublish(meta.app_id, {
7611
+ const publishUpdateResult = await updatePublish(meta.appId, {
7612
7612
  publishID: publishResult.publishID,
7613
7613
  routesConfig
7614
7614
  });
7615
- const appUrl = publishUpdateResult.onlineURL || buildAppUrl(meta.app_id);
7615
+ const appUrl = publishUpdateResult.onlineURL || buildAppUrl(meta.appId);
7616
7616
  writeSparkMeta(projectDir, {
7617
7617
  ...meta,
7618
- app_url: appUrl
7618
+ appUrl
7619
7619
  });
7620
7620
  console.log(`
7621
7621
  \u2705 Deployed successfully!`);
7622
- console.log(` App ID: ${meta.app_id}`);
7622
+ console.log(` App ID: ${meta.appId}`);
7623
7623
  console.log(` Version: ${publishResult.version}`);
7624
7624
  console.log(` URL: ${appUrl}`);
7625
7625
  });
@@ -7653,7 +7653,7 @@ function loadEnvFile(filePath) {
7653
7653
  }
7654
7654
  }
7655
7655
  loadEnvFile(import_node_path17.default.join(process.cwd(), ".env"));
7656
- var VERSION = "0.1.0";
7656
+ var VERSION = "0.1.4";
7657
7657
  var cli = new OpenClawCLI(VERSION);
7658
7658
  cli.useAll(commands);
7659
7659
  cli.run();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/openclaw-dev-cli",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "CLI tool for OpenClaw development",
5
5
  "main": "dist/index.js",
6
6
  "bin": {