@ranger1/dx 0.1.7 → 0.1.9

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
@@ -152,6 +152,13 @@ dx lint
152
152
  dx test e2e backend
153
153
  ```
154
154
 
155
+ ## deploy 行为说明
156
+
157
+ 从 `0.1.9` 起,`dx deploy <target>` 不再在 dx 内部硬编码执行任何 `nx build`/`sdk build` 等前置步骤。
158
+
159
+ - 需要的前置构建(例如 `shared`、`api-contracts`、OpenAPI 导出、后端构建等)应由项目自己的 Nx 依赖图(`dependsOn`/项目依赖)或 Vercel 的 `buildCommand` 负责。
160
+ - 这样 dx deploy 不会强依赖 `apps/sdk` 等目录结构,更容易适配不同 monorepo。
161
+
155
162
  ## 给 Nx target 注入版本信息(可选)
156
163
 
157
164
  本包提供 `dx-with-version-env`,用于在 `nx:run-commands` 中注入版本/sha/构建时间等环境变量:
package/lib/env-policy.js CHANGED
@@ -1,15 +1,12 @@
1
1
  import { existsSync, readFileSync } from 'node:fs'
2
2
  import { join } from 'node:path'
3
+ import stripJsonComments from 'strip-json-comments'
3
4
 
4
5
  const DEFAULT_POLICY_PATH = 'env-policy.jsonc'
5
6
 
6
7
  let cachedPolicy = null
7
8
  let cachedPolicyDir = null
8
9
 
9
- function sanitizeJsonc(raw) {
10
- return raw.replace(/\/\*[\s\S]*?\*\//g, '').replace(/^\s*\/\/.*$/gm, '')
11
- }
12
-
13
10
  function assertStringArray(value, fieldPath) {
14
11
  if (!Array.isArray(value)) {
15
12
  throw new Error(`${fieldPath} 必须是数组`)
@@ -39,7 +36,7 @@ export function loadEnvPolicy(configDir) {
39
36
  let parsed
40
37
  try {
41
38
  const raw = readFileSync(policyPath, 'utf8')
42
- parsed = JSON.parse(sanitizeJsonc(raw) || '{}')
39
+ parsed = JSON.parse(stripJsonComments(raw) || '{}')
43
40
  } catch (error) {
44
41
  throw new Error(`无法解析 ${DEFAULT_POLICY_PATH}: ${error.message}`)
45
42
  }
package/lib/env.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { existsSync, readFileSync } from 'node:fs'
2
2
  import { join } from 'node:path'
3
+ import stripJsonComments from 'strip-json-comments'
3
4
 
4
5
  function resolveProjectRoot() {
5
6
  return process.env.DX_PROJECT_ROOT || process.cwd()
@@ -112,7 +113,7 @@ export class EnvManager {
112
113
 
113
114
  try {
114
115
  const raw = readFileSync(configPath, 'utf8')
115
- const sanitized = raw.replace(/\/\*[\s\S]*?\*\//g, '').replace(/^\s*\/\/.*$/gm, '')
116
+ const sanitized = stripJsonComments(raw)
116
117
  this.requiredEnvConfig = JSON.parse(sanitized || '{}') || { _common: [] }
117
118
  } catch (error) {
118
119
  throw new Error(`无法解析 required-env.jsonc: ${error.message}`)
@@ -79,35 +79,9 @@ export async function deployToVercel(target, options = {}) {
79
79
  return
80
80
  }
81
81
 
82
- // 部署前先编译 backend sdk
83
- // staging 复用 production 构建配置
84
- try {
85
- logger.step('编译 backend...')
86
- const backendConfig = environment === 'production' || environment === 'staging'
87
- ? 'production'
88
- : 'development'
89
- await execManager.executeCommand(`npx nx build backend --configuration=${backendConfig}`, {
90
- app: 'backend',
91
- flags: {
92
- ...(environment === 'production' ? { prod: true } : {}),
93
- ...(environment === 'staging' ? { staging: true } : {}),
94
- ...(environment === 'development' ? { dev: true } : {}),
95
- },
96
- })
97
- logger.success('backend 编译成功')
98
-
99
- logger.step('编译 sdk...')
100
- const { runSdkBuild } = await import('./sdk-build.js')
101
- const sdkArgs = environment === 'production' ? [] : ['dev']
102
- await runSdkBuild(sdkArgs)
103
- logger.success('sdk 编译成功')
104
- } catch (error) {
105
- const message = error?.message || String(error)
106
- logger.error(`编译失败: ${message}`)
107
- logger.error('部署已终止,请先修复编译错误')
108
- process.exitCode = 1
109
- return
110
- }
82
+ // deploy 不再硬编码任何 Nx 构建步骤。
83
+ // - 前置构建/生成(shared/contracts/backend 等)应由项目自己的 Nx 依赖图或 Vercel buildCommand 负责。
84
+ // - 这样 dx deploy 能兼容不同 monorepo 布局(不强依赖 apps/sdk 等目录)。
111
85
 
112
86
  // 映射环境标识:development -> dev, staging -> staging, production -> prod
113
87
  const envMap = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ranger1/dx",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,8 +26,15 @@
26
26
  "access": "public"
27
27
  },
28
28
  "dependencies": {
29
+ "strip-json-comments": "^5.0.3",
29
30
  "yaml": "^2.8.1"
30
31
  },
32
+ "devDependencies": {
33
+ "jest": "^29.7.0"
34
+ },
35
+ "scripts": {
36
+ "test": "NODE_OPTIONS=--experimental-vm-modules jest"
37
+ },
31
38
  "engines": {
32
39
  "node": ">=20.11.0"
33
40
  }