@lark-project/cli
Version:
飞书项目插件开发工具
38 lines (37 loc) • 1.98 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.persistAppTypeToConfig = void 0;
const path_1 = __importDefault(require("path"));
const fs_extra_1 = require("fs-extra");
const logger_1 = require("../../../utils/logger");
/**
* 把 `app_type` 落进 `<targetDir>/plugin.config.json`(保留其余字段)。
*
* 关键时序:本写入 **MUST 在 `yarn install` 之前** 调用。模板渲染出的
* plugin.config.json 不含 `app_type`,而 install 可能耗时数分钟且易被中断;若把
* `app_type` 写在 install 之后,一旦 install 被打断,磁盘上就留下一份缺 `app_type`
* 的 config,被 `local-plugin-config` 默认解释成 `normal`(见 local-plugin-config.ts),
* 造成「后端已建成 ai_node / 本地却被当 normal」的静默漂移。把写入提前到 install 前,
* 中断也能留下正确的 config。
*
* `'normal'` 也显式写入——缺省字段会被下游当 normal,但显式写入消除「undefined ↔ 'normal'」
* 的歧义,也让中断后的 config 自描述。
*
* @returns 是否真的写入了(config 不存在 / appType 为空 → false,no-op)
*/
function persistAppTypeToConfig(targetDir, appType) {
if (!appType)
return false;
const pluginConfigPath = path_1.default.resolve(targetDir, 'plugin.config.json');
if (!(0, fs_extra_1.existsSync)(pluginConfigPath)) {
logger_1.logger.warn(`plugin.config.json not found at ${pluginConfigPath}; skipping app_type persistence.`);
return false;
}
const existing = (0, fs_extra_1.readJSONSync)(pluginConfigPath);
(0, fs_extra_1.writeJSONSync)(pluginConfigPath, Object.assign(Object.assign({}, existing), { app_type: appType }), { spaces: 2 });
return true;
}
exports.persistAppTypeToConfig = persistAppTypeToConfig;