UNPKG

yite-cli

Version:

专注于vite + vue3 的项目开发脚手架

59 lines (52 loc) 2.22 kB
import { resolve, dirname } from 'node:path'; import { cpSync, mkdirSync, existsSync, rmSync } from 'node:fs'; import pacote from 'pacote'; import { log4state } from '../utils/index.js'; import { fnAppDir } from '../system.js'; async function mainUpdate(options) { try { const appDir = fnAppDir(options.workdir); const updateDir = resolve(appDir, '.cache', 'npm-package'); const fetchData = await fetch(`https://registry.npmmirror.com/@funpi/admin/latest`); const metaData = await fetchData.json(); await pacote.extract(metaData.dist.tarball, updateDir, {}); [ { type: 'dir', source: resolve(updateDir, 'src', 'pages', 'internal'), target: resolve(appDir, 'src', 'pages', 'internal') }, { type: 'file', source: resolve(updateDir, 'src', 'config', 'internal.js'), target: resolve(appDir, 'src', 'config', 'internal.js') }, { type: 'file', source: resolve(updateDir, 'src', 'utils', 'internal.js'), target: resolve(appDir, 'src', 'utils', 'internal.js') }, { type: 'file', source: resolve(updateDir, 'src', 'styles', 'internal.scss'), target: resolve(appDir, 'src', 'styles', 'internal.scss') } ].forEach((item) => { const targetDir = item.type === 'dir' ? item.target : dirname(item.target); // 删除目标文件或目录 if (existsSync(item.target)) { rmSync(item.target, { recursive: true, force: true }); } // 创建目标目录 if (!existsSync(targetDir)) { mkdirSync(targetDir, { recursive: true }); } cpSync(item.source, item.target, { recursive: true }); }); console.log(log4state('success'), '项目更新成功!'); } catch (error) { console.log('🚀 ~ file: update.js:20 ~ mainUpdate ~ error:', error); console.log(log4state('error'), '资源错误或不存在!'); } } export { mainUpdate };