UNPKG

bd-admin

Version:

一款能根据需求快速配置vue后台管理的脚手架

153 lines (152 loc) 3.86 kB
const lang = (variant) => { let ts = ""; if (variant === "TypeScript") { ts = `, "typescript": "^5.2.2", "vue-tsc": "^1.8.27"`; } return `"@vitejs/plugin-vue": "^5.0.4", "vite": "^5.1.4"${ts}`; }; const ui = (type) => { let dependencies = ""; let devDependencies = ""; switch (type) { case "element": devDependencies = `, "unplugin-auto-import": "^0.17.5", "unplugin-vue-components": "^0.26.0"`; dependencies = `"@element-plus/icons-vue": "^2.3.1", "element-plus": "^2.6.0"`; break; case "antdv": dependencies = `"ant-design-vue": "^4.1.2"`; devDependencies = `, "fast-glob": "^3.3.2"`; break; default: return; } return { dependencies, devDependencies, }; }; const css = (type) => { if (type === "scss") { return `"sass": "^1.71.1", "sass-loader": "^14.1.1"`; } else { return `"less": "^4.2.0", "less-loader": "^12.2.0"`; } }; const eslintWrite = (answers) => { const { variant, eslint } = answers; if (!eslint) return ""; if (variant === "TypeScript") { return `, "vite-plugin-eslint": "^1.8.1", "@vue/eslint-config-typescript": "^12.0.0", "eslint-config-prettier": "^9.1.0", "eslint-config-standard-with-typescript": "^43.0.1", "eslint-plugin-import": "^2.29.1", "eslint-plugin-n": "^16.6.2", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-vue": "^9.22.0", "vue-eslint-parser": "^9.4.2"`; } else { return `, "vite-plugin-eslint": "^1.8.1", "@vue/eslint-config-prettier": "^9.0.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-vue": "^9.22.0", "prettier": "^3.2.5"`; } }; const eslintScripts = (answers) => { if (answers.eslint) { return `, "lint": "eslint --ext .js,.vue,ts,jsx,tsx src", "prettier": "prettier --write ."`; } else { return ""; } }; const npmRunDev = (answers) => { if (answers.eslint) { return `"test": "prettier --write . & eslint --ext .js,.vue,ts,jsx,tsx src & vite --mode development",`; } else { return `"test": "vite --mode development",`; } }; const i18n = (type) => { if (type) { return `, "vue-i18n": "^9.10.1"`; } else { return ""; } }; const echarts = (type) => { if (type) { return `, "echarts": "^5.5.0"`; } else { return ""; } }; const three3D = (type) => { if (type) { return `, "@types/three": "^0.160.0", "three": "^0.160.0"`; } else { return ""; } }; export const createPackage = (answers) => { const { projectName } = answers; return `{ "name": "${projectName}", "private": true, "version": "${answers.version}", "type": "module", "scripts": { ${npmRunDev(answers)} "dev": "vite --mode development", "serve": "vite --mode development", "serve:pro": "vite --mode production", "build": "vite build --mode development", "build:pro": "vite build --mode production", "preview": "vite preview"${eslintScripts(answers)} }, "dependencies": { "path": "^0.12.7", "vue": "^3.4.19", "vue-router": "^4.3.0", "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.1", "axios": "^1.6.7", ${ui(answers.ui).dependencies}${i18n(answers.i18n)}${echarts(answers.echarts)}${three3D(answers.three)} }, "devDependencies": { "vite-plugin-svg-icons": "^2.0.1", "vite-svg-loader": "^5.1.0", ${lang(answers.variant)}${ui(answers.ui).devDependencies}, ${css(answers.css)}${eslintWrite(answers)} } } `; };