From 0b9915a814533b37c0d32856b286313e420a2fe9 Mon Sep 17 00:00:00 2001 From: luckyasme <807254037@qq.com> Date: Sat, 26 Jul 2025 18:38:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E5=90=AF=E5=8A=A8=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + scripts/dev.js | 33 +++++++++++++++++++++++++++++++++ scripts/gen-toc.js | 4 +++- scripts/pre-dev.js | 23 +++++++++++++++++------ 4 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 scripts/dev.js diff --git a/package.json b/package.json index 011053e32..f9d05051c 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "pre-dev": "node scripts/pre-dev.js", "gen-toc": "node scripts/gen-toc.js", "dev": "vitepress dev app", + "dev2": "node scripts/dev.js", "build": "node scripts/gen-toc.js $VERSION && vitepress build app", "preview": "vitepress preview app", "format": "prettier --write app/.vitepress/src/", diff --git a/scripts/dev.js b/scripts/dev.js new file mode 100644 index 000000000..14654f54f --- /dev/null +++ b/scripts/dev.js @@ -0,0 +1,33 @@ +import { exec } from 'child_process'; + +import NEW_VERSONS from './config/new-version.js'; + +function execCommand(command) { + return new Promise((resolve, reject) => { + const child = exec(command, { + inherit: true, + }); + + child.stdout?.pipe(process.stdout); + child.stderr?.pipe(process.stderr); + + child.on('close', (code) => { + resolve(code); + }); + + child.on('error', (error) => { + reject(error); + }); + }); +} + +(async () => { + let versions = process.argv.slice(2); + if (versions.length === 0) { + versions = NEW_VERSONS; + } + + await execCommand(`pnpm pre-dev ${versions.join(' ')}`); + await execCommand(`pnpm gen-toc ${versions.join(' ')}`); + await execCommand(`pnpm dev`); +})(); diff --git a/scripts/gen-toc.js b/scripts/gen-toc.js index 854329246..59649caf9 100644 --- a/scripts/gen-toc.js +++ b/scripts/gen-toc.js @@ -9,6 +9,7 @@ import yaml from 'js-yaml'; import { slugify } from '@mdit-vue/shared'; import { getGitUrlInfo } from './utils/git.js'; +import { getBranchName } from './utils/common.js'; const __dirname = path.resolve(); // 获取当前文件夹路径 const recordIds = new Set(); // 已处理过的 id @@ -393,7 +394,8 @@ async function processTocFile() { const outputZhPath = path.join(__dirname, './app/.vitepress/public/toc/toc.json'); const outputEnPath = path.join(__dirname, './app/.vitepress/public/toc/toc-en.json'); - for (const version of versions) { + for (const item of versions) { + const version = getBranchName(item); console.log(`正在构建 ${version} toc 文件...`); if (version === 'common') { // common 分支处理 diff --git a/scripts/pre-dev.js b/scripts/pre-dev.js index 8d87b580f..ad83f7692 100644 --- a/scripts/pre-dev.js +++ b/scripts/pre-dev.js @@ -38,6 +38,7 @@ function gitCloneAndCheckout(url, branch) { console.log(`[pre-dev]: 本地存在分支 ${branch},开始切换分支`); try { + execSync(`cd ${repoDir} && git checkout HEAD -- . && git clean -fd`, { stdio: 'inherit' }); execSync(`cd ${repoDir} && git checkout ${branch}`, { stdio: 'inherit' }); console.log(`[pre-dev]: 切换分支成功,开始拉取远程更新内容`); execSync(`cd ${repoDir} && git pull origin ${branch}`, { stdio: 'inherit' }); @@ -124,7 +125,7 @@ function copyDslContent() { /** * 复制 sig 仓库内容到指定位置 */ -const copySigRepo = async (upstream, dir, storagePath) => { +function copySigRepo(upstream, dir, storagePath) { const { url, repo, branch, locations } = getGitUrlInfo(upstream); gitCloneAndCheckout(url, branch); const cachePath = path.join(CACHE_DIR, repo); @@ -175,15 +176,22 @@ function scanYamlToCloneSigRepo(targetPath) { } } -const syncDocs = async (branch) => { +/** + * 同步文档内容到对应的目录 + * @param {string} branch 分支名 + */ +function syncDocs(branch) { const branchName = getBranchName(branch); - // 复制文档内容 gitCloneAndCheckout('https://gitee.com/openeuler/docs.git', branch); copyDocsContent(branchName); scanYamlToCloneSigRepo(`${__dirname}/app/zh/docs/${branchName}`); scanYamlToCloneSigRepo(`${__dirname}/app/en/docs/${branchName}`); +}; - // 复制 dsl 内容 +/** + * 同步 dsl 内容 + */ +function syncDsl() { gitCloneAndCheckout('https://gitee.com/openeuler/docs.git', 'stable-common'); copyDslContent(); }; @@ -192,6 +200,9 @@ const args = process.argv.slice(2); if (args.length === 0) { console.error('请提供分支名称'); process.exit(1); -} else { - syncDocs(args[0]); +} + +syncDsl(); +for (const branch of args) { + syncDocs(branch); } -- Gitee