UNPKG

vue3-quickstart-cli

Version:

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

43 lines (39 loc) 1.47 kB
import path from 'path'; import fs from 'fs-extra'; import chalk from 'chalk'; const plugin = { name: 'i18n', apply(targetDir, pkg) { pkg.dependencies = pkg.dependencies || {}; pkg.dependencies['vue-i18n'] = '^9.10.0'; const i18nDir = path.join(targetDir, 'src/i18n'); fs.ensureDirSync(i18nDir); fs.writeFileSync(path.join(i18nDir, 'index.ts'), `import { createI18n } from 'vue-i18n'; const messages = { en: { message: { hello: 'hello world' } }, zh: { message: { hello: '你好,世界' } }, }; const i18n = createI18n({ locale: 'zh', fallbackLocale: 'en', messages, }); export default i18n; `); 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'); if (!mainCode.includes("import i18n from './i18n'")) { mainCode = mainCode.replace(/(import App from .+;\n)/, `$1import i18n from './i18n';\n`); } 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!')); } }; export default plugin;