@gadmin2n/cli 0.0.106 → 0.0.108
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 +17 -0
- package/actions/new.action.js +35 -0
- package/actions/update.action.d.ts +1 -0
- package/actions/update.action.js +564 -630
- package/commands/command.loader.js +0 -2
- package/commands/update.command.js +27 -37
- package/lib/template-merge/base-store.d.ts +16 -0
- package/lib/template-merge/base-store.js +127 -0
- package/lib/template-merge/binary-detect.d.ts +7 -0
- package/lib/template-merge/binary-detect.js +36 -0
- package/lib/template-merge/classify.d.ts +10 -0
- package/lib/template-merge/classify.js +61 -0
- package/lib/template-merge/config-validate.d.ts +5 -0
- package/lib/template-merge/config-validate.js +33 -0
- package/lib/template-merge/excludes.d.ts +7 -0
- package/lib/template-merge/excludes.js +109 -0
- package/lib/template-merge/index.d.ts +9 -8
- package/lib/template-merge/index.js +10 -8
- package/lib/template-merge/materialize.d.ts +18 -0
- package/lib/template-merge/materialize.js +129 -0
- package/lib/template-merge/merge3way.d.ts +15 -0
- package/lib/template-merge/merge3way.js +54 -0
- package/lib/template-merge/residual-scan.d.ts +10 -0
- package/lib/template-merge/residual-scan.js +31 -0
- package/lib/template-merge/types.d.ts +27 -0
- package/lib/template-merge/types.js +5 -0
- package/package.json +2 -2
- package/commands/build.command.d.ts +0 -5
- package/commands/build.command.js +0 -50
- package/lib/template-merge/config-loader.d.ts +0 -15
- package/lib/template-merge/config-loader.js +0 -38
- package/lib/template-merge/env-merger.d.ts +0 -5
- package/lib/template-merge/env-merger.js +0 -57
- package/lib/template-merge/glob.d.ts +0 -5
- package/lib/template-merge/glob.js +0 -78
- package/lib/template-merge/json-merger.d.ts +0 -5
- package/lib/template-merge/json-merger.js +0 -269
- package/lib/template-merge/merger.d.ts +0 -30
- package/lib/template-merge/merger.js +0 -2
- package/lib/template-merge/prisma-merger.d.ts +0 -5
- package/lib/template-merge/prisma-merger.js +0 -112
- package/lib/template-merge/registry.d.ts +0 -25
- package/lib/template-merge/registry.js +0 -42
- package/lib/template-merge/ts-module-merger.d.ts +0 -16
- package/lib/template-merge/ts-module-merger.js +0 -193
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## [Unreleased]
|
|
2
|
+
|
|
3
|
+
### BREAKING CHANGES
|
|
4
|
+
|
|
5
|
+
- `gadmin2 update` 改造为 git-merge 风格三方合并:
|
|
6
|
+
- base 由 `.gadmin/.meta.json` 中记录的 `@gadmin2n/schematics` npm 版本号唯一标识,单次 update 时 `npm pack` 物化到 `os.tmpdir()`,结束即清理;不再写入 `.gadmin/template-base/` 目录
|
|
7
|
+
- 删除 4 个 Smart Merger 与逐文件 inquirer prompt
|
|
8
|
+
- `gadmin-cli.json` 中 `templateUpdate.policies` / `templateUpdate.mergers` 字段已下线,存在则启动报错
|
|
9
|
+
- 新增 `gadmin2 update status` 子命令、`--ours` / `--theirs` flag
|
|
10
|
+
- `gadmin2 update diff` 升级为三方展示
|
|
11
|
+
- `gadmin2 update` 现在每次执行都需要访问 npm registry(用于物化 base 对应版本的 schematics 包);CI 环境请预热 npm 缓存或配置内网 registry。
|
|
12
|
+
|
|
13
|
+
### Migration
|
|
14
|
+
|
|
15
|
+
- 老实例首次跑新 CLI 时会进入"首次接入"分支:写入 `.gadmin/.meta.json`(含 `schematicsVersion`)、`.gadmin/README.md`,退出。无数据风险。
|
|
16
|
+
- 含废弃字段的 `gadmin-cli.json` 必须先删除字段才能继续。
|
|
17
|
+
- 之前版本生成的 `.gadmin/template-base/` 目录现在已被忽略,可安全删除并 commit。
|
package/actions/new.action.js
CHANGED
|
@@ -108,6 +108,10 @@ class NewAction extends abstract_action_1.AbstractAction {
|
|
|
108
108
|
for (const m of missingEnv) {
|
|
109
109
|
console.info(` - ${chalk.cyan(m.var)} (${m.desc})`);
|
|
110
110
|
console.info(chalk.gray(` vi ${m.file}`));
|
|
111
|
+
// DATABASE_URL 跳过时,init.sql 仍是模板默认 db 名,需要用户同步修改
|
|
112
|
+
if (m.var === 'DATABASE_URL') {
|
|
113
|
+
console.info(chalk.gray(` vi dev/postgres/init.sql # 将 CREATE DATABASE gadmin_demo; 改为实际数据库名`));
|
|
114
|
+
}
|
|
111
115
|
}
|
|
112
116
|
console.info();
|
|
113
117
|
step++;
|
|
@@ -204,11 +208,26 @@ const mapSchematicOptions = (options) => {
|
|
|
204
208
|
return schematicOptions;
|
|
205
209
|
}, []);
|
|
206
210
|
};
|
|
211
|
+
/**
|
|
212
|
+
* 从 PostgreSQL 连接串中解析 database 名。
|
|
213
|
+
* 形如 `postgresql://user:pwd@host:5432/db_name?schema=public` → `db_name`。
|
|
214
|
+
* 解析失败返回空字符串。
|
|
215
|
+
*/
|
|
216
|
+
const parseDbNameFromUrl = (url) => {
|
|
217
|
+
try {
|
|
218
|
+
const u = new URL(url);
|
|
219
|
+
return decodeURIComponent(u.pathname.replace(/^\//, '')) || '';
|
|
220
|
+
}
|
|
221
|
+
catch (_a) {
|
|
222
|
+
return '';
|
|
223
|
+
}
|
|
224
|
+
};
|
|
207
225
|
/**
|
|
208
226
|
* 在项目生成完毕后,把用户提供的环境配置写入对应文件。
|
|
209
227
|
* - VITE_AGENT_ID → web/.env.local (始终创建,含注释模板)
|
|
210
228
|
* - DATABASE_URL → server/.env.local (始终创建,含注释模板)
|
|
211
229
|
* - TAIHU_APP_TOKEN→ server/.env (仅当用户提供时才正则替换)
|
|
230
|
+
* - dev/postgres/init.sql (仅当用户提供 database-url 时才替换 CREATE DATABASE 行)
|
|
212
231
|
*/
|
|
213
232
|
const applyEnvConfig = (projectDirectory, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
214
233
|
const viteAgentId = getOptionByName(options, 'vite-agent-id') || '';
|
|
@@ -245,6 +264,22 @@ const applyEnvConfig = (projectDirectory, options) => __awaiter(void 0, void 0,
|
|
|
245
264
|
yield writeFile(serverEnv, replaced);
|
|
246
265
|
}
|
|
247
266
|
}
|
|
267
|
+
// (4) dev/postgres/init.sql — 同步替换 CREATE DATABASE 行的 db 名
|
|
268
|
+
// 仅当用户提供 database-url 且能解析出 db 名时才替换;若跳过则保持模板原样,
|
|
269
|
+
// 由最终引导提示用户自行修改。
|
|
270
|
+
if (databaseUrl) {
|
|
271
|
+
const parsedDbName = parseDbNameFromUrl(databaseUrl);
|
|
272
|
+
if (parsedDbName && parsedDbName !== 'gadmin_demo') {
|
|
273
|
+
const initSql = (0, path_1.join)(process.cwd(), projectDirectory, 'dev', 'postgres', 'init.sql');
|
|
274
|
+
if (fs.existsSync(initSql)) {
|
|
275
|
+
const original = yield readFile(initSql, 'utf8');
|
|
276
|
+
const replaced = original.replace(/^CREATE DATABASE gadmin_demo;$/m, `CREATE DATABASE ${parsedDbName};`);
|
|
277
|
+
if (replaced !== original) {
|
|
278
|
+
yield writeFile(initSql, replaced);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
248
283
|
});
|
|
249
284
|
const installPackages = (options, dryRunMode, installDirectory) => __awaiter(void 0, void 0, void 0, function* () {
|
|
250
285
|
const inputPackageManager = options.find((option) => option.name === 'package-manager').value;
|