UNPKG

vue3-quickstart-cli

Version:

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

32 lines (30 loc) 1.33 kB
import path from "path"; import fs from "fs-extra"; import chalk from "chalk"; export default function genPinia(targetDir, pkg) { pkg.dependencies["pinia"] = "^2.1.7"; const storeDir = path.join(targetDir, "src/store"); fs.ensureDirSync(storeDir); // 优先生成 store/index.ts fs.writeFileSync(path.join(storeDir, "index.ts"), `import { createPinia } from 'pinia'; const pinia = createPinia(); export default pinia; `); // 挂载 pinia,自动判断 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"); // 如果没有引入 store,则插入 import store if (!mainCode.includes("import store from './store'")) { mainCode = mainCode.replace(/(import App from .+;\n)/, `$1import store from './store';\n`); } // 如果没有 app.use(store),则插入 if (!mainCode.includes('app.use(store)')) { mainCode = mainCode.replace(/(const app = createApp\([^)]*\);?\n)/, `$1\napp.use(store);\n`); } fs.writeFileSync(mainPath, mainCode, "utf-8"); } console.log(chalk.green("已集成 Pinia!")); }