@coze-arch/cli 0.0.15-alpha.dfd4c4 → 0.0.16-alpha.a1c0bb
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/lib/cli.js +259 -198
- package/package.json +1 -1
package/lib/cli.js
CHANGED
|
@@ -2107,7 +2107,7 @@ const EventBuilder = {
|
|
|
2107
2107
|
};
|
|
2108
2108
|
|
|
2109
2109
|
var name = "@coze-arch/cli";
|
|
2110
|
-
var version = "0.0.
|
|
2110
|
+
var version = "0.0.16-alpha.a1c0bb";
|
|
2111
2111
|
var description = "coze coding devtools cli";
|
|
2112
2112
|
var license = "MIT";
|
|
2113
2113
|
var author = "fanwenjie.fe@bytedance.com";
|
|
@@ -6148,201 +6148,8 @@ const byFlag = (flag) => {
|
|
|
6148
6148
|
};
|
|
6149
6149
|
|
|
6150
6150
|
function _optionalChain$4(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6151
|
-
const PATCH_ID$3 = 'vite/add-validate@0.0.14';
|
|
6152
|
-
const COZE_FILE = '.coze';
|
|
6153
|
-
const VALIDATE_SCRIPT_FILE = 'scripts/validate.sh';
|
|
6154
|
-
const PACKAGE_JSON_FILE$1 = 'package.json';
|
|
6155
|
-
|
|
6156
|
-
const VALIDATE_LINE = 'validate = ["bash", "./scripts/validate.sh"]';
|
|
6157
|
-
|
|
6158
|
-
const REQUIRED_SCRIPTS = {
|
|
6159
|
-
'ts-check': 'tsc -p tsconfig.json',
|
|
6160
|
-
'lint:build': 'eslint . --quiet',
|
|
6161
|
-
validate: "pnpm run --parallel '/^(ts-check|lint:build)$/'",
|
|
6162
|
-
};
|
|
6163
|
-
|
|
6164
|
-
|
|
6165
|
-
|
|
6166
|
-
|
|
6167
|
-
|
|
6168
|
-
const getTemplateValidateScriptPath = () =>
|
|
6169
|
-
path.join(getTemplatesDir(), 'vite', 'scripts', 'validate.sh');
|
|
6170
|
-
|
|
6171
|
-
const getProjectValidateScriptPath = (projectFolder) =>
|
|
6172
|
-
path.join(projectFolder, VALIDATE_SCRIPT_FILE);
|
|
6173
|
-
|
|
6174
|
-
const readTemplateValidateScriptContent = async () =>
|
|
6175
|
-
fs$1.readFile(getTemplateValidateScriptPath(), 'utf-8');
|
|
6176
|
-
|
|
6177
|
-
const hasValidateInCoze = (context) =>
|
|
6178
|
-
_optionalChain$4([context, 'access', _ => _.cozeConfig, 'optionalAccess', _2 => _2.dev, 'optionalAccess', _3 => _3.validate]) !== undefined;
|
|
6179
|
-
|
|
6180
|
-
const getMissingScripts = (
|
|
6181
|
-
scripts,
|
|
6182
|
-
) => {
|
|
6183
|
-
const missing = {};
|
|
6184
|
-
for (const [key, value] of Object.entries(REQUIRED_SCRIPTS)) {
|
|
6185
|
-
if (!scripts || scripts[key] === undefined) {
|
|
6186
|
-
missing[key] = value;
|
|
6187
|
-
}
|
|
6188
|
-
}
|
|
6189
|
-
return missing;
|
|
6190
|
-
};
|
|
6191
|
-
|
|
6192
|
-
const addValidateToCoze = async (projectFolder) => {
|
|
6193
|
-
const cozePath = path.join(projectFolder, COZE_FILE);
|
|
6194
|
-
const content = await fs$1.readFile(cozePath, 'utf-8');
|
|
6195
|
-
|
|
6196
|
-
const lines = content.split('\n');
|
|
6197
|
-
let devStart = -1;
|
|
6198
|
-
let devEnd = -1;
|
|
6199
|
-
|
|
6200
|
-
for (let i = 0; i < lines.length; i++) {
|
|
6201
|
-
if (lines[i].trim() === '[dev]') {
|
|
6202
|
-
devStart = i;
|
|
6203
|
-
} else if (devStart !== -1 && lines[i].startsWith('[')) {
|
|
6204
|
-
devEnd = i;
|
|
6205
|
-
break;
|
|
6206
|
-
}
|
|
6207
|
-
}
|
|
6208
|
-
|
|
6209
|
-
if (devStart === -1) {
|
|
6210
|
-
return false;
|
|
6211
|
-
}
|
|
6212
|
-
|
|
6213
|
-
if (devEnd === -1) {
|
|
6214
|
-
devEnd = lines.length;
|
|
6215
|
-
}
|
|
6216
|
-
|
|
6217
|
-
lines.splice(devEnd, 0, VALIDATE_LINE);
|
|
6218
|
-
await fs$1.writeFile(cozePath, lines.join('\n'), 'utf-8');
|
|
6219
|
-
return true;
|
|
6220
|
-
};
|
|
6221
|
-
|
|
6222
|
-
const createValidateScript = async (
|
|
6223
|
-
projectFolder,
|
|
6224
|
-
) => {
|
|
6225
|
-
const targetPath = getProjectValidateScriptPath(projectFolder);
|
|
6226
|
-
if (await isFileExists(targetPath)) {
|
|
6227
|
-
return false;
|
|
6228
|
-
}
|
|
6229
|
-
|
|
6230
|
-
const scriptsDir = path.join(projectFolder, 'scripts');
|
|
6231
|
-
if (!(await isFileExists(scriptsDir))) {
|
|
6232
|
-
await fs$1.mkdir(scriptsDir, { recursive: true });
|
|
6233
|
-
}
|
|
6234
|
-
|
|
6235
|
-
const templateContent = await readTemplateValidateScriptContent();
|
|
6236
|
-
await fs$1.writeFile(targetPath, templateContent, 'utf-8');
|
|
6237
|
-
return true;
|
|
6238
|
-
};
|
|
6239
|
-
|
|
6240
|
-
const addMissingScriptsToPackageJson = async (
|
|
6241
|
-
projectFolder,
|
|
6242
|
-
) => {
|
|
6243
|
-
const packageJsonPath = path.join(projectFolder, PACKAGE_JSON_FILE$1);
|
|
6244
|
-
if (!(await isFileExists(packageJsonPath))) {
|
|
6245
|
-
return false;
|
|
6246
|
-
}
|
|
6247
|
-
|
|
6248
|
-
const content = await fs$1.readFile(packageJsonPath, 'utf-8');
|
|
6249
|
-
const packageJson = safeJsonParse(content, null);
|
|
6250
|
-
if (!packageJson) {
|
|
6251
|
-
return false;
|
|
6252
|
-
}
|
|
6253
|
-
|
|
6254
|
-
const missingScripts = getMissingScripts(packageJson.scripts);
|
|
6255
|
-
if (Object.keys(missingScripts).length === 0) {
|
|
6256
|
-
return false;
|
|
6257
|
-
}
|
|
6258
|
-
|
|
6259
|
-
packageJson.scripts = { ...packageJson.scripts, ...missingScripts };
|
|
6260
|
-
await fs$1.writeFile(
|
|
6261
|
-
packageJsonPath,
|
|
6262
|
-
JSON.stringify(packageJson, null, 2),
|
|
6263
|
-
'utf-8',
|
|
6264
|
-
);
|
|
6265
|
-
return true;
|
|
6266
|
-
};
|
|
6267
|
-
|
|
6268
|
-
const patchViteAddValidate = {
|
|
6269
|
-
id: PATCH_ID$3,
|
|
6270
|
-
template: 'vite',
|
|
6271
|
-
disabled: byFlag('coding.arch.patch_vite_validate'),
|
|
6272
|
-
operations: [
|
|
6273
|
-
{
|
|
6274
|
-
kind: 'file-patch',
|
|
6275
|
-
file: COZE_FILE,
|
|
6276
|
-
description: '在 [dev] 下添加 validate 命令',
|
|
6277
|
-
},
|
|
6278
|
-
{
|
|
6279
|
-
kind: 'create-file',
|
|
6280
|
-
file: VALIDATE_SCRIPT_FILE,
|
|
6281
|
-
description: '创建 validate 脚本',
|
|
6282
|
-
},
|
|
6283
|
-
{
|
|
6284
|
-
kind: 'file-patch',
|
|
6285
|
-
file: PACKAGE_JSON_FILE$1,
|
|
6286
|
-
description: '补齐 validate/ts-check/lint:build 脚本',
|
|
6287
|
-
},
|
|
6288
|
-
],
|
|
6289
|
-
shouldApply: context =>
|
|
6290
|
-
context.template === 'vite' && !hasValidateInCoze(context),
|
|
6291
|
-
apply: async (context) => {
|
|
6292
|
-
if (context.template !== 'vite') {
|
|
6293
|
-
return {
|
|
6294
|
-
applied: false,
|
|
6295
|
-
patchId: PATCH_ID$3,
|
|
6296
|
-
message: 'Only applies to vite projects, skipping',
|
|
6297
|
-
};
|
|
6298
|
-
}
|
|
6299
|
-
|
|
6300
|
-
if (hasValidateInCoze(context)) {
|
|
6301
|
-
return {
|
|
6302
|
-
applied: false,
|
|
6303
|
-
patchId: PATCH_ID$3,
|
|
6304
|
-
message: '.coze already has validate config, skipping',
|
|
6305
|
-
};
|
|
6306
|
-
}
|
|
6307
|
-
|
|
6308
|
-
const cozeUpdated = await addValidateToCoze(context.projectFolder);
|
|
6309
|
-
if (!cozeUpdated) {
|
|
6310
|
-
return {
|
|
6311
|
-
applied: false,
|
|
6312
|
-
patchId: PATCH_ID$3,
|
|
6313
|
-
message:
|
|
6314
|
-
'Failed to add validate to .coze ([dev] section not found), skipping',
|
|
6315
|
-
};
|
|
6316
|
-
}
|
|
6317
|
-
logger.info('Patched .coze: added validate command');
|
|
6318
|
-
|
|
6319
|
-
const scriptCreated = await createValidateScript(context.projectFolder);
|
|
6320
|
-
if (scriptCreated) {
|
|
6321
|
-
logger.info('Created scripts/validate.sh');
|
|
6322
|
-
} else {
|
|
6323
|
-
logger.info('scripts/validate.sh already exists, skipping');
|
|
6324
|
-
}
|
|
6325
|
-
|
|
6326
|
-
const scriptsUpdated = await addMissingScriptsToPackageJson(
|
|
6327
|
-
context.projectFolder,
|
|
6328
|
-
);
|
|
6329
|
-
if (scriptsUpdated) {
|
|
6330
|
-
logger.info('Patched package.json: added missing scripts');
|
|
6331
|
-
} else {
|
|
6332
|
-
logger.info('package.json scripts already complete, skipping');
|
|
6333
|
-
}
|
|
6334
|
-
|
|
6335
|
-
return {
|
|
6336
|
-
applied: true,
|
|
6337
|
-
patchId: PATCH_ID$3,
|
|
6338
|
-
message: 'Added validate support to vite project',
|
|
6339
|
-
};
|
|
6340
|
-
},
|
|
6341
|
-
};
|
|
6342
|
-
|
|
6343
|
-
function _optionalChain$3(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6344
6151
|
const PATCH_ID$2 = 'taro/update-pack-script-for-tt-build@0.0.13';
|
|
6345
|
-
const PACKAGE_JSON_FILE = 'package.json';
|
|
6152
|
+
const PACKAGE_JSON_FILE$1 = 'package.json';
|
|
6346
6153
|
const PACK_SCRIPT_FILE = '.cozeproj/scripts/pack.sh';
|
|
6347
6154
|
const LEGACY_PACK_SCRIPT_HASHES = new Set([
|
|
6348
6155
|
'987575c08e1c32ce7bc553e1668b3ad8faad5623343fd0d21fea34d39f25a56d',
|
|
@@ -6411,7 +6218,7 @@ const hashContent = (content) =>
|
|
|
6411
6218
|
const readPackageScripts = async (
|
|
6412
6219
|
projectFolder,
|
|
6413
6220
|
) => {
|
|
6414
|
-
const packageJsonPath = path.join(projectFolder, PACKAGE_JSON_FILE);
|
|
6221
|
+
const packageJsonPath = path.join(projectFolder, PACKAGE_JSON_FILE$1);
|
|
6415
6222
|
if (!(await isFileExists(packageJsonPath))) {
|
|
6416
6223
|
return null;
|
|
6417
6224
|
}
|
|
@@ -6419,12 +6226,12 @@ const readPackageScripts = async (
|
|
|
6419
6226
|
const packageJsonContent = await fs$1.readFile(packageJsonPath, 'utf-8');
|
|
6420
6227
|
const packageJson = safeJsonParse(packageJsonContent, null);
|
|
6421
6228
|
|
|
6422
|
-
return _optionalChain$
|
|
6229
|
+
return _optionalChain$4([packageJson, 'optionalAccess', _ => _.scripts]) || null;
|
|
6423
6230
|
};
|
|
6424
6231
|
|
|
6425
6232
|
const hasBuildTtScript = async (projectFolder) => {
|
|
6426
6233
|
const scripts = await readPackageScripts(projectFolder);
|
|
6427
|
-
return typeof _optionalChain$
|
|
6234
|
+
return typeof _optionalChain$4([scripts, 'optionalAccess', _2 => _2['build:tt']]) === 'string';
|
|
6428
6235
|
};
|
|
6429
6236
|
|
|
6430
6237
|
const hasLegacyPackScript = async (projectFolder) => {
|
|
@@ -6759,6 +6566,256 @@ const patchNextOutputTracingRoot = {
|
|
|
6759
6566
|
},
|
|
6760
6567
|
};
|
|
6761
6568
|
|
|
6569
|
+
function _optionalChain$3(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
6570
|
+
|
|
6571
|
+
|
|
6572
|
+
const COZE_FILE = '.coze';
|
|
6573
|
+
const PACKAGE_JSON_FILE = 'package.json';
|
|
6574
|
+
|
|
6575
|
+
const VALIDATE_RELATED_SCRIPTS = {
|
|
6576
|
+
nextjs: ['validate', 'ts-check', 'lint:build'],
|
|
6577
|
+
vite: ['validate', 'ts-check', 'lint:build'],
|
|
6578
|
+
'nuxt-vue': ['validate', 'ts-check', 'lint:build'],
|
|
6579
|
+
taro: ['validate', 'lint:build', 'tsc'],
|
|
6580
|
+
expo: ['validate', 'lint:client', 'lint:server'],
|
|
6581
|
+
};
|
|
6582
|
+
|
|
6583
|
+
|
|
6584
|
+
|
|
6585
|
+
|
|
6586
|
+
|
|
6587
|
+
const FG_KEY_MAP = {
|
|
6588
|
+
nextjs: 'coding.arch.patch_nextjs_validate',
|
|
6589
|
+
vite: 'coding.arch.patch_vite_validate',
|
|
6590
|
+
'nuxt-vue': 'coding.arch.patch_nuxt_vue_validate',
|
|
6591
|
+
taro: 'coding.arch.patch_taro_validate',
|
|
6592
|
+
expo: 'coding.arch.patch_expo_validate',
|
|
6593
|
+
};
|
|
6594
|
+
|
|
6595
|
+
const VALIDATE_SCRIPT_MAP = {
|
|
6596
|
+
nextjs: 'scripts/validate.sh',
|
|
6597
|
+
vite: 'scripts/validate.sh',
|
|
6598
|
+
'nuxt-vue': 'scripts/validate.sh',
|
|
6599
|
+
taro: '.cozeproj/scripts/validate.sh',
|
|
6600
|
+
expo: '.cozeproj/scripts/validate.sh',
|
|
6601
|
+
};
|
|
6602
|
+
|
|
6603
|
+
const hasValidateInCoze = (context) =>
|
|
6604
|
+
_optionalChain$3([context, 'access', _ => _.cozeConfig, 'optionalAccess', _2 => _2.dev, 'optionalAccess', _3 => _3.validate]) !== undefined;
|
|
6605
|
+
|
|
6606
|
+
const getTemplateScripts = async (
|
|
6607
|
+
template,
|
|
6608
|
+
) => {
|
|
6609
|
+
const templatePackageJsonPath = path.join(
|
|
6610
|
+
getTemplatesDir(),
|
|
6611
|
+
template,
|
|
6612
|
+
PACKAGE_JSON_FILE,
|
|
6613
|
+
);
|
|
6614
|
+
const content = await fs$1.readFile(templatePackageJsonPath, 'utf-8');
|
|
6615
|
+
const templatePackageJson = safeJsonParse(content, null);
|
|
6616
|
+
if (!_optionalChain$3([templatePackageJson, 'optionalAccess', _4 => _4.scripts])) {
|
|
6617
|
+
return {};
|
|
6618
|
+
}
|
|
6619
|
+
|
|
6620
|
+
const relatedKeys = VALIDATE_RELATED_SCRIPTS[template];
|
|
6621
|
+
const result = {};
|
|
6622
|
+
for (const key of relatedKeys) {
|
|
6623
|
+
if (templatePackageJson.scripts[key] !== undefined) {
|
|
6624
|
+
result[key] = templatePackageJson.scripts[key];
|
|
6625
|
+
}
|
|
6626
|
+
}
|
|
6627
|
+
return result;
|
|
6628
|
+
};
|
|
6629
|
+
|
|
6630
|
+
const getMissingScripts = (
|
|
6631
|
+
scripts,
|
|
6632
|
+
templateScripts,
|
|
6633
|
+
) => {
|
|
6634
|
+
const missing = {};
|
|
6635
|
+
for (const [key, value] of Object.entries(templateScripts)) {
|
|
6636
|
+
if (!scripts || scripts[key] === undefined) {
|
|
6637
|
+
missing[key] = value;
|
|
6638
|
+
}
|
|
6639
|
+
}
|
|
6640
|
+
return missing;
|
|
6641
|
+
};
|
|
6642
|
+
|
|
6643
|
+
const addValidateToCoze = async (
|
|
6644
|
+
projectFolder,
|
|
6645
|
+
validateScriptPath,
|
|
6646
|
+
) => {
|
|
6647
|
+
const cozePath = path.join(projectFolder, COZE_FILE);
|
|
6648
|
+
const content = await fs$1.readFile(cozePath, 'utf-8');
|
|
6649
|
+
|
|
6650
|
+
const validateLine = `validate = ["bash", "${validateScriptPath}"]`;
|
|
6651
|
+
|
|
6652
|
+
const lines = content.split('\n');
|
|
6653
|
+
let devStart = -1;
|
|
6654
|
+
let devEnd = -1;
|
|
6655
|
+
|
|
6656
|
+
for (let i = 0; i < lines.length; i++) {
|
|
6657
|
+
if (lines[i].trim() === '[dev]') {
|
|
6658
|
+
devStart = i;
|
|
6659
|
+
} else if (devStart !== -1 && lines[i].startsWith('[')) {
|
|
6660
|
+
devEnd = i;
|
|
6661
|
+
break;
|
|
6662
|
+
}
|
|
6663
|
+
}
|
|
6664
|
+
|
|
6665
|
+
if (devStart === -1) {
|
|
6666
|
+
return false;
|
|
6667
|
+
}
|
|
6668
|
+
|
|
6669
|
+
if (devEnd === -1) {
|
|
6670
|
+
devEnd = lines.length;
|
|
6671
|
+
}
|
|
6672
|
+
|
|
6673
|
+
lines.splice(devEnd, 0, validateLine);
|
|
6674
|
+
await fs$1.writeFile(cozePath, lines.join('\n'), 'utf-8');
|
|
6675
|
+
return true;
|
|
6676
|
+
};
|
|
6677
|
+
|
|
6678
|
+
const createValidateScript = async (
|
|
6679
|
+
projectFolder,
|
|
6680
|
+
template,
|
|
6681
|
+
validateScriptFile,
|
|
6682
|
+
) => {
|
|
6683
|
+
const targetPath = path.join(projectFolder, validateScriptFile);
|
|
6684
|
+
if (await isFileExists(targetPath)) {
|
|
6685
|
+
return false;
|
|
6686
|
+
}
|
|
6687
|
+
|
|
6688
|
+
const scriptsDir = path.join(projectFolder, validateScriptFile.split('/').slice(0, -1).join('/'));
|
|
6689
|
+
if (!(await isFileExists(scriptsDir))) {
|
|
6690
|
+
await fs$1.mkdir(scriptsDir, { recursive: true });
|
|
6691
|
+
}
|
|
6692
|
+
|
|
6693
|
+
const templateScriptPath = path.join(
|
|
6694
|
+
getTemplatesDir(),
|
|
6695
|
+
template,
|
|
6696
|
+
validateScriptFile,
|
|
6697
|
+
);
|
|
6698
|
+
const templateContent = await fs$1.readFile(templateScriptPath, 'utf-8');
|
|
6699
|
+
await fs$1.writeFile(targetPath, templateContent, 'utf-8');
|
|
6700
|
+
return true;
|
|
6701
|
+
};
|
|
6702
|
+
|
|
6703
|
+
const addMissingScriptsToPackageJson = async (
|
|
6704
|
+
projectFolder,
|
|
6705
|
+
template,
|
|
6706
|
+
) => {
|
|
6707
|
+
const packageJsonPath = path.join(projectFolder, PACKAGE_JSON_FILE);
|
|
6708
|
+
if (!(await isFileExists(packageJsonPath))) {
|
|
6709
|
+
return false;
|
|
6710
|
+
}
|
|
6711
|
+
|
|
6712
|
+
const content = await fs$1.readFile(packageJsonPath, 'utf-8');
|
|
6713
|
+
const packageJson = safeJsonParse(content, null);
|
|
6714
|
+
if (!packageJson) {
|
|
6715
|
+
return false;
|
|
6716
|
+
}
|
|
6717
|
+
|
|
6718
|
+
const templateScripts = await getTemplateScripts(template);
|
|
6719
|
+
const missingScripts = getMissingScripts(packageJson.scripts, templateScripts);
|
|
6720
|
+
if (Object.keys(missingScripts).length === 0) {
|
|
6721
|
+
return false;
|
|
6722
|
+
}
|
|
6723
|
+
|
|
6724
|
+
packageJson.scripts = { ...packageJson.scripts, ...missingScripts };
|
|
6725
|
+
await fs$1.writeFile(
|
|
6726
|
+
packageJsonPath,
|
|
6727
|
+
JSON.stringify(packageJson, null, 2),
|
|
6728
|
+
'utf-8',
|
|
6729
|
+
);
|
|
6730
|
+
return true;
|
|
6731
|
+
};
|
|
6732
|
+
|
|
6733
|
+
const createAddValidatePatch = (template) => {
|
|
6734
|
+
const patchId = `${template}/add-validate@0.0.1`;
|
|
6735
|
+
const validateScriptFile = VALIDATE_SCRIPT_MAP[template];
|
|
6736
|
+
const validateScriptPath = template === 'taro' || template === 'expo'
|
|
6737
|
+
? validateScriptFile
|
|
6738
|
+
: `./${validateScriptFile}`;
|
|
6739
|
+
|
|
6740
|
+
return {
|
|
6741
|
+
id: patchId,
|
|
6742
|
+
template,
|
|
6743
|
+
disabled: byFlag(FG_KEY_MAP[template]),
|
|
6744
|
+
operations: [
|
|
6745
|
+
{
|
|
6746
|
+
kind: 'file-patch',
|
|
6747
|
+
file: COZE_FILE,
|
|
6748
|
+
description: '在 [dev] 下添加 validate 命令',
|
|
6749
|
+
},
|
|
6750
|
+
{
|
|
6751
|
+
kind: 'create-file',
|
|
6752
|
+
file: validateScriptFile,
|
|
6753
|
+
description: '创建 validate 脚本',
|
|
6754
|
+
},
|
|
6755
|
+
{
|
|
6756
|
+
kind: 'file-patch',
|
|
6757
|
+
file: PACKAGE_JSON_FILE,
|
|
6758
|
+
description: '补齐 validate/ts-check/lint:build 脚本',
|
|
6759
|
+
},
|
|
6760
|
+
],
|
|
6761
|
+
shouldApply: context => !hasValidateInCoze(context),
|
|
6762
|
+
apply: async (context) => {
|
|
6763
|
+
const cozeUpdated = await addValidateToCoze(
|
|
6764
|
+
context.projectFolder,
|
|
6765
|
+
validateScriptPath,
|
|
6766
|
+
);
|
|
6767
|
+
if (!cozeUpdated) {
|
|
6768
|
+
return {
|
|
6769
|
+
applied: false,
|
|
6770
|
+
patchId,
|
|
6771
|
+
message:
|
|
6772
|
+
'Failed to add validate to .coze ([dev] section not found), skipping',
|
|
6773
|
+
};
|
|
6774
|
+
}
|
|
6775
|
+
if (context.cozeConfig) {
|
|
6776
|
+
context.cozeConfig.dev = {
|
|
6777
|
+
...context.cozeConfig.dev,
|
|
6778
|
+
validate: ['bash', validateScriptPath],
|
|
6779
|
+
};
|
|
6780
|
+
}
|
|
6781
|
+
logger.info('Patched .coze: added validate command');
|
|
6782
|
+
|
|
6783
|
+
const scriptCreated = await createValidateScript(
|
|
6784
|
+
context.projectFolder,
|
|
6785
|
+
template,
|
|
6786
|
+
validateScriptFile,
|
|
6787
|
+
);
|
|
6788
|
+
if (scriptCreated) {
|
|
6789
|
+
logger.info(`Created ${validateScriptFile}`);
|
|
6790
|
+
} else {
|
|
6791
|
+
logger.info(`${validateScriptFile} already exists, skipping`);
|
|
6792
|
+
}
|
|
6793
|
+
|
|
6794
|
+
const scriptsUpdated = await addMissingScriptsToPackageJson(
|
|
6795
|
+
context.projectFolder,
|
|
6796
|
+
template,
|
|
6797
|
+
);
|
|
6798
|
+
if (scriptsUpdated) {
|
|
6799
|
+
logger.info('Patched package.json: added missing scripts');
|
|
6800
|
+
} else {
|
|
6801
|
+
logger.info('package.json scripts already complete, skipping');
|
|
6802
|
+
}
|
|
6803
|
+
|
|
6804
|
+
return {
|
|
6805
|
+
applied: true,
|
|
6806
|
+
patchId,
|
|
6807
|
+
message: `Added validate support to ${template} project`,
|
|
6808
|
+
};
|
|
6809
|
+
},
|
|
6810
|
+
};
|
|
6811
|
+
};
|
|
6812
|
+
|
|
6813
|
+
const patchNextjsAddValidate = createAddValidatePatch('nextjs');
|
|
6814
|
+
const patchViteAddValidate = createAddValidatePatch('vite');
|
|
6815
|
+
const patchNuxtVueAddValidate = createAddValidatePatch('nuxt-vue');
|
|
6816
|
+
const patchTaroAddValidate = createAddValidatePatch('taro');
|
|
6817
|
+
const patchExpoAddValidate = createAddValidatePatch('expo');
|
|
6818
|
+
|
|
6762
6819
|
const patches = [
|
|
6763
6820
|
replaceNpxWithPnpmPatchNextjs,
|
|
6764
6821
|
replaceNpxWithPnpmPatchVite,
|
|
@@ -6766,7 +6823,11 @@ const patches = [
|
|
|
6766
6823
|
patchNextOutputTracingRoot,
|
|
6767
6824
|
patchTaroAgentsMd,
|
|
6768
6825
|
patchTaroPackScript,
|
|
6826
|
+
patchNextjsAddValidate,
|
|
6769
6827
|
patchViteAddValidate,
|
|
6828
|
+
patchNuxtVueAddValidate,
|
|
6829
|
+
patchTaroAddValidate,
|
|
6830
|
+
patchExpoAddValidate,
|
|
6770
6831
|
] ;
|
|
6771
6832
|
|
|
6772
6833
|
const getTemplatePatches = (
|