fix(admin-ui): changelog build context — copy script + CI before_script
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Copy `docs/changelog.md` → `ordinis-admin-ui/src/changelog-public.md`.
|
||||
*
|
||||
* Why: public CHANGELOG лежит в `docs/` (single source of truth, читается
|
||||
* mkdocs/Diplodoc для /docs/changelog.html). admin-ui WhatsNewButton тоже
|
||||
* импортирует его через Vite `?raw`, но Docker build context = admin-ui/,
|
||||
* `docs/` снаружи. Скрипт вызывается через `predev` / `prebuild` npm
|
||||
* hooks — копирует файл в admin-ui/src/ перед start'ом vite.
|
||||
*
|
||||
* В CI копию делает `.gitlab-ci.yml` `docker-admin-ui:before_script:` —
|
||||
* перед docker build файл уже в context'е, Dockerfile `COPY . .` подхватит.
|
||||
*
|
||||
* **Critical name choice:** `changelog-public.md`, не `changelog.md`. macOS
|
||||
* по умолчанию case-insensitive filesystem (APFS / HFS+) — `changelog.md` ≡
|
||||
* `CHANGELOG.md` ≡ existing internal CHANGELOG.md → overwrite. Suffix
|
||||
* `-public` устраняет конфликт + явно показывает purpose. Plus файл живёт
|
||||
* в `src/` (не root) чтобы Vite `?raw` ресолвил по relative path без `..`.
|
||||
*
|
||||
* `src/changelog-public.md` — generated, gitignored.
|
||||
*/
|
||||
import { copyFileSync, existsSync, mkdirSync } from 'node:fs'
|
||||
import { dirname, resolve } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||
const SRC = resolve(__dirname, '..', '..', 'docs', 'changelog.md')
|
||||
const DST = resolve(__dirname, '..', 'src', 'changelog-public.md')
|
||||
|
||||
if (!existsSync(SRC)) {
|
||||
console.error(`copy-changelog: source missing ${SRC}`)
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
mkdirSync(dirname(DST), { recursive: true })
|
||||
copyFileSync(SRC, DST)
|
||||
console.log(`copy-changelog: ${SRC} → ${DST}`)
|
||||
Reference in New Issue
Block a user