ai-yuca 1.6.2 → 1.6.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/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [1.6.3] - 2026-06-05
4
+
5
+ ### Added
6
+ - `deploy` 命令新增 `--replace-config-name-with-package` 参数,上传环境 config.json 时可将匹配项目的 `name` 替换为当前 `package.json.name`。
7
+
3
8
  ## [1.6.2] - 2026-05-20
4
9
 
5
10
  ### Added
package/README.md CHANGED
@@ -177,6 +177,9 @@ ai-yuca deploy -e test -f
177
177
 
178
178
  # 查看部署配置
179
179
  ai-yuca deploy -e test --show-config
180
+
181
+ # 上传环境 config.json 时,将匹配项目的 name 替换为 package.json.name
182
+ ai-yuca deploy -e test --replace-config-name-with-package
180
183
  ```
181
184
 
182
185
  ## 资源处理
package/dist/bin/cli.js CHANGED
@@ -205,6 +205,7 @@ program
205
205
  .option('--no-cache', '禁用文件缓存检查,强制上传所有文件')
206
206
  .option('--cache-file <path>', '指定缓存文件路径,默认为 .cdn.cache.[branch].json')
207
207
  .option('--show-config', '仅打印读取到的配置信息,不执行真实的部署操作')
208
+ .option('--replace-config-name-with-package', '上传环境 config.json 时,将匹配项目的 name 替换为当前 package.json 的项目名')
208
209
  .option('-f, --force', '强制执行部署,跳过终端交互式确认提示')
209
210
  .action(async (options) => {
210
211
  try {
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-yuca",
3
- "version": "1.6.2",
3
+ "version": "1.6.3",
4
4
  "description": "一个用AI生成的开发辅助工具",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -217,12 +217,18 @@ async function uploadToGcp(filePath, bucketName, destination, storageClient) {
217
217
  /**
218
218
  * 更新环境配置
219
219
  */
220
- async function updateEnvironmentConfig(env, projectName, versionInfo, config, storageClient) {
220
+ async function updateEnvironmentConfig(env, projectName, versionInfo, config, storageClient, replaceConfigNameWithPackage = false) {
221
221
  try {
222
222
  // 获取当前环境配置
223
223
  const { data: envConfig } = await getConfigFiles(env, config, storageClient);
224
- // 查找或创建项目配置
224
+ if (!Array.isArray(envConfig.projects)) {
225
+ envConfig.projects = [];
226
+ }
227
+ // 开启替换时,允许通过s3Static定位旧项目并改写name。
225
228
  let projectConfig = envConfig.projects.find((p) => p.name === projectName);
229
+ if (!projectConfig && replaceConfigNameWithPackage) {
230
+ projectConfig = envConfig.projects.find((p) => p.s3Static === config.upload.s3Static);
231
+ }
226
232
  const newProjectConfig = {
227
233
  baseUrl: versionInfo.baseUrl,
228
234
  s3Static: config.upload.s3Static,
@@ -237,7 +243,7 @@ async function updateEnvironmentConfig(env, projectName, versionInfo, config, st
237
243
  }
238
244
  else {
239
245
  envConfig.projects = envConfig.projects.map((p) => {
240
- if (p.name === projectName) {
246
+ if (p === projectConfig || p.name === projectName) {
241
247
  return newProjectConfig;
242
248
  }
243
249
  return p;
@@ -461,7 +467,14 @@ async function deployFiles(options) {
461
467
  // 检查项目是否存在
462
468
  const { data: envConfig } = await getConfigFiles(options.env, config, storageClient);
463
469
  console.log('当前环境配置:', JSON.stringify(envConfig));
464
- const existingProject = envConfig.projects.find((p) => p.name === projectInfo.name);
470
+ let existingProject = envConfig.projects.find((p) => p.name === projectInfo.name);
471
+ if (!existingProject && options.replaceConfigNameWithPackage) {
472
+ // 参数开启时,用s3Static识别需要改名的旧项目配置。
473
+ existingProject = envConfig.projects.find((p) => p.s3Static === config.upload.s3Static);
474
+ if (existingProject && existingProject.name !== projectInfo.name) {
475
+ console.log(`🔁 环境配置项目名将由 "${existingProject.name}" 替换为 "${projectInfo.name}"`);
476
+ }
477
+ }
465
478
  if (!existingProject) {
466
479
  if (options.force) {
467
480
  console.log(`🆕 自动创建项目 "${projectInfo.name}" 在环境 "${options.env}" 中...`);
@@ -489,7 +502,7 @@ async function deployFiles(options) {
489
502
  timestamp: Date.now(),
490
503
  links: obj.links
491
504
  };
492
- const projectConfigUpdate = await updateEnvironmentConfig(options.env, projectInfo.name, versionInfo, config, storageClient);
505
+ const projectConfigUpdate = await updateEnvironmentConfig(options.env, projectInfo.name, versionInfo, config, storageClient, Boolean(options.replaceConfigNameWithPackage));
493
506
  console.log('项目配置信息上传结果:', JSON.stringify(projectConfigUpdate));
494
507
  if (!projectConfigUpdate) {
495
508
  throw new Error('更新项目配置失败,发布失败!');
@@ -13,6 +13,7 @@ export interface DeployCommandOptions {
13
13
  cacheFile?: string;
14
14
  showConfig?: boolean;
15
15
  cdn?: boolean;
16
+ replaceConfigNameWithPackage?: boolean;
16
17
  force?: boolean;
17
18
  maxUploadNum?: number;
18
19
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-yuca",
3
- "version": "1.6.2",
3
+ "version": "1.6.3",
4
4
  "description": "一个用AI生成的开发辅助工具",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",