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 +5 -0
- package/README.md +3 -0
- package/dist/bin/cli.js +1 -0
- package/dist/package.json +1 -1
- package/dist/src/deploy.js +18 -5
- package/dist/src/types/deploy.d.ts +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
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
package/dist/src/deploy.js
CHANGED
|
@@ -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
|
-
|
|
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('更新项目配置失败,发布失败!');
|