@ranger1/dx 0.1.1 → 0.1.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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # dx
2
2
 
3
- 一个可安装的 Node.js CLI,用于管理 ai-monorepo 类项目的构建/启动/数据库/部署等流程。
3
+ 一个可安装的 Node.js CLI,用于管理符合约定的 pnpm + nx monorepo 项目的构建/启动/数据库/部署等流程。
4
4
 
5
5
  ## 安装
6
6
 
@@ -76,7 +76,7 @@ dx test e2e backend
76
76
 
77
77
  ```json
78
78
  {
79
- "command": "../../node_modules/.bin/dx-with-version-env --app front -- next build"
79
+ "command": "dx-with-version-env --app front -- next build"
80
80
  }
81
81
  ```
82
82
 
@@ -84,10 +84,11 @@ dx test e2e backend
84
84
 
85
85
  ## 约束与假设
86
86
 
87
- 当前版本面向 ai-monorepo 类结构,默认假设:
87
+ 当前版本面向 pnpm + nx 的 monorepo,默认假设:
88
88
 
89
89
  - 使用 pnpm + nx
90
- - 项目布局包含 `apps/backend`、`apps/front`、`apps/admin-front`、`apps/sdk`
90
+ - 项目布局包含 `apps/backend`、`apps/front`、`apps/admin-front`、`apps/sdk`(如果你的命令配置不依赖这些目录,可自行调整)
91
+ - 版本注入脚本 `dx-with-version-env` 默认支持 app: `backend` / `front` / `admin`
91
92
 
92
93
  ## 发布到 npm(准备工作)
93
94
 
@@ -101,4 +102,3 @@ dx test e2e backend
101
102
  npm publish --access public --registry=https://registry.npmjs.org
102
103
  ```
103
104
 
104
- 提示:当前仓库包含一个 `.npmrc`,用于确保 publish 走 npm 官方 registry(避免镜像源导致发布失败)。
package/lib/cli/dx-cli.js CHANGED
@@ -8,6 +8,7 @@ import { validateEnvironment } from '../validate-env.js'
8
8
  import { FLAG_DEFINITIONS, parseFlags } from './flags.js'
9
9
  import { getCleanArgs } from './args.js'
10
10
  import { showHelp, showCommandHelp } from './help.js'
11
+ import { getPackageVersion } from '../version.js'
11
12
  import {
12
13
  handleHelp,
13
14
  handleDev,
@@ -261,6 +262,11 @@ class DxCli {
261
262
  // 主执行方法
262
263
  async run() {
263
264
  try {
265
+ if (this.flags.version) {
266
+ console.log(getPackageVersion())
267
+ return
268
+ }
269
+
264
270
  // 显示帮助
265
271
  if (this.flags.help || !this.command) {
266
272
  if (this.flags.help && this.command && this.command !== 'help') {
package/lib/cli/flags.js CHANGED
@@ -15,6 +15,8 @@ export const FLAG_DEFINITIONS = {
15
15
  { flag: '--verbose' },
16
16
  { flag: '-h' },
17
17
  { flag: '--help' },
18
+ { flag: '-V' },
19
+ { flag: '--version' },
18
20
  { flag: '--parallel' },
19
21
  { flag: '-P' },
20
22
  ],
@@ -74,6 +76,10 @@ export function parseFlags(args = []) {
74
76
  case '--help':
75
77
  flags.help = true
76
78
  break
79
+ case '-V':
80
+ case '--version':
81
+ flags.version = true
82
+ break
77
83
  case '--no-env-check':
78
84
  flags.noEnvCheck = true
79
85
  break
package/lib/cli/help.js CHANGED
@@ -1,6 +1,9 @@
1
+ import { getPackageVersion } from '../version.js'
2
+
1
3
  export function showHelp() {
4
+ const version = getPackageVersion()
2
5
  console.log(`
3
- DX CLI - 统一开发环境管理工具
6
+ DX CLI v${version} - 统一开发环境管理工具
4
7
 
5
8
  用法:
6
9
  dx <命令> [选项] [参数...]
@@ -67,8 +70,9 @@ DX CLI - 统一开发环境管理工具
67
70
  --test 使用测试环境
68
71
  --e2e 使用E2E测试环境
69
72
  -Y, --yes 跳过所有确认提示
70
- -v, --verbose 详细输出
71
- -h, --help 显示此帮助信息
73
+ -v, --verbose 详细输出
74
+ -h, --help 显示此帮助信息
75
+ -V, --version 显示版本号
72
76
 
73
77
  示例:
74
78
  dx start stack # PM2 交互式服务栈(推荐)- 同时管理三个服务
@@ -1,5 +1,3 @@
1
- #!/usr/bin/env node
2
-
3
1
  import { spawn, execSync } from 'node:child_process'
4
2
  import { readFile } from 'node:fs/promises'
5
3
  import { resolve, join, dirname } from 'node:path'
@@ -47,7 +45,7 @@ async function readPackageVersion(app) {
47
45
  const appDirMap = {
48
46
  backend: 'apps/backend/package.json',
49
47
  front: 'apps/front/package.json',
50
- admin: 'apps/admin-front/package.json',
48
+ admin: 'apps/admin-front/package.json'
51
49
  }
52
50
  const pkgPath = appDirMap[app]
53
51
  if (!pkgPath) return '0.0.0'
@@ -101,7 +99,7 @@ function buildEnv(app, baseEnv, extraEnv) {
101
99
  ['BUILD_GIT_SHA', gitSha],
102
100
  ['BUILD_TIME', now],
103
101
  ['BUILD_TIMESTAMP', now],
104
- ['BUILD_NUMBER', buildNumber],
102
+ ['BUILD_NUMBER', buildNumber]
105
103
  ])
106
104
  break
107
105
  }
@@ -112,7 +110,7 @@ function buildEnv(app, baseEnv, extraEnv) {
112
110
  ['NEXT_PUBLIC_GIT_SHA', gitSha],
113
111
  ['NEXT_PUBLIC_GIT_SHORT_SHA', gitShort],
114
112
  ['NEXT_PUBLIC_BUILD_TIME', now],
115
- ['NEXT_PUBLIC_BUILD_NUMBER', buildNumber],
113
+ ['NEXT_PUBLIC_BUILD_NUMBER', buildNumber]
116
114
  ])
117
115
  break
118
116
  }
@@ -123,7 +121,7 @@ function buildEnv(app, baseEnv, extraEnv) {
123
121
  ['VITE_GIT_SHA', gitSha],
124
122
  ['VITE_GIT_SHORT_SHA', gitShort],
125
123
  ['VITE_BUILD_TIME', now],
126
- ['VITE_BUILD_NUMBER', buildNumber],
124
+ ['VITE_BUILD_NUMBER', buildNumber]
127
125
  ])
128
126
  break
129
127
  }
@@ -150,7 +148,7 @@ export async function runWithVersionEnv(argv = []) {
150
148
  const child = spawn(command[0], command.slice(1), {
151
149
  stdio: 'inherit',
152
150
  env,
153
- shell: false,
151
+ shell: false
154
152
  })
155
153
 
156
154
  child.on('exit', code => {
@@ -162,12 +160,3 @@ export async function runWithVersionEnv(argv = []) {
162
160
  process.exit(1)
163
161
  })
164
162
  }
165
-
166
- async function main() {
167
- await runWithVersionEnv(process.argv.slice(2))
168
- }
169
-
170
- main().catch(error => {
171
- console.error('[with-version-env] 执行失败:', error)
172
- process.exit(1)
173
- })
package/lib/version.js ADDED
@@ -0,0 +1,14 @@
1
+ import { readFileSync } from 'node:fs'
2
+ import { join, dirname } from 'node:path'
3
+ import { fileURLToPath } from 'node:url'
4
+
5
+ export function getPackageVersion() {
6
+ try {
7
+ const here = dirname(fileURLToPath(import.meta.url))
8
+ const pkgPath = join(here, '..', 'package.json')
9
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))
10
+ return typeof pkg.version === 'string' ? pkg.version : '0.0.0'
11
+ } catch {
12
+ return '0.0.0'
13
+ }
14
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ranger1/dx",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {