UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

38 lines (37 loc) 1.98 kB
"use strict"; 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;