UNPKG

vue3-quickstart-cli

Version:

一个用于快速创建 Vue3 项目的脚手架工具。

44 lines (40 loc) 1.48 kB
import path from "path"; import fs from "fs-extra"; import chalk from "chalk"; export default function genI18n(targetDir, pkg) { pkg.dependencies = pkg.dependencies || {}; pkg.dependencies["vue-i18n"] = "^9.9.0"; // 生成 src/i18n/index.ts const i18nDir = path.join(targetDir, "src/i18n"); fs.ensureDirSync(i18nDir); fs.writeFileSync(path.join(i18nDir, "index.ts"), `import { createI18n } from 'vue-i18n'; const messages = { zh: { hello: '你好,世界!' }, en: { hello: 'Hello, world!' } }; const i18n = createI18n({ legacy: false, locale: 'zh', messages }); export default i18n; `); // 自动挂载到 main.ts/main.js const mainTs = path.join(targetDir, "src/main.ts"); const mainJs = path.join(targetDir, "src/main.js"); let mainPath = fs.existsSync(mainTs) ? mainTs : mainJs; if (fs.existsSync(mainPath)) { let mainCode = fs.readFileSync(mainPath, "utf-8"); // 插入 import i18n if (!mainCode.includes("import i18n from './i18n'")) { mainCode = mainCode.replace(/(import App from .+;\n)/, `$1import i18n from './i18n';\n`); } // 插入 app.use(i18n) if (!mainCode.includes("app.use(i18n)")) { mainCode = mainCode.replace(/(const app = createApp\([^)]*\);?\n)/, `$1\napp.use(i18n);\n`); } fs.writeFileSync(mainPath, mainCode, "utf-8"); } // 提示 console.log(chalk.green("已集成 vue-i18n 国际化!")); }