vite-plugin-config-helper 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/esm/main.js +1 -1
  2. package/package.json +4 -4
package/dist/esm/main.js CHANGED
@@ -1 +1 @@
1
- import*as e from"node:fs";import n from"node:fs";import*as o from"node:path";import*as t from"node:os";async function r(e){try{return await n.promises.access(e),!0}catch{return!1}}async function l(e,o){return await new Promise(((o,t)=>{let r="";n.createReadStream(e,{highWaterMark:1048576,encoding:"utf8"}).on("error",(e=>t(e))).on("data",(e=>r+=e)).on("end",(()=>{o(r)}))}))}async function s(e,o,t){return await new Promise(((t,r)=>{n.createWriteStream(e,{encoding:"utf8",highWaterMark:1048576}).on("error",(e=>r(e))).on("finish",(()=>t())).on("open",(function(){this.write(o),this.end()}))}))}function i(n={port:5173,baseUrl:"/api",proxyUrl:"http://192.168.0.193:9999",pluginEnvHelper:!0,pluginScanRoutes:!1,pluginElementPlus:!0}){return{name:"vite-plugin-config-helper",async configResolved(i){if(await r(o.resolve(process.cwd(),"./build/config/index.ts")))return;if(await r(o.resolve(process.cwd(),"./build/config/plugins.ts")))return;e.mkdirSync(process.cwd()+"/build/config",{recursive:!0});const p=await r(o.resolve(process.cwd(),"./.env")),c=["VITE_APP_BASE_URL","VITE_APP_PROXY_URL","VITE_APP_PORT"];if(!(c[0]in i.env))if(p){let e=await l(o.resolve(process.cwd(),"./.env"));e+=t.EOL+`VITE_APP_BASE_URL=${n.baseUrl}`,await s(o.resolve(process.cwd(),"./.env"),e)}else await s(o.resolve(process.cwd(),"./.env"),`VITE_APP_BASE_URL=${n.baseUrl}`);if(!(c[1]in i.env))if(await r(o.resolve(process.cwd(),"./.env"))){let e=await l(o.resolve(process.cwd(),"./.env"));e+=t.EOL+`VITE_APP_PROXY_URL=${n.proxyUrl}`,await s(o.resolve(process.cwd(),"./.env"),e)}else await s(o.resolve(process.cwd(),"./.env"),`VITE_APP_PROXY_URL=${n.proxyUrl}`);if(!(c[2]in i.env))if(await r(o.resolve(process.cwd(),"./.env"))){let e=await l(o.resolve(process.cwd(),"./.env"));e+=t.EOL+`VITE_APP_PORT=${n.port}`,await s(o.resolve(process.cwd(),"./.env"),e)}else await s(o.resolve(process.cwd(),"./.env"),`VITE_APP_PORT=${n.port}`);if(!await r(o.resolve(process.cwd(),"./build/config/plugins.ts"))){const e="import type { PluginsOption } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport vueJsx from '@vitejs/plugin-vue-jsx'\nimport vueDevTools from 'vite-plugin-vue-devtools'"+t.EOL+(n.pluginScanRoutes?"import scanRoutes from 'vite-plugin-scan-routes'":"")+t.EOL+(n.pluginEnvHelper?"import { envHelper } from 'vite-plugin-env-helper'":"")+t.EOL+t.EOL+t.EOL+"export function createPlugins(): PluginsOption {\n const vitePlugins: PluginsOption = [\n vue(),\n vueJsx(),\n vueDevTools()"+(n.pluginScanRoutes?","+t.EOL+" scanRoutes()":"")+(n.pluginEnvHelper?","+t.EOL+" envHelper()"+t.EOL:"")+t.EOL+" ]\n return vitePlugins\n}\n";await s(o.resolve(process.cwd(),"./build/config/plugins.ts"),e)}if(n.pluginElementPlus){if(e.mkdirSync(process.cwd()+"/src/components",{recursive:!0}),!await r(o.resolve(process.cwd(),"./build/config/ep.ts"))){const e="import type { PluginsOption } from 'vite'\nimport AutoImport from 'unplugin-auto-import/vite'\nimport Components from 'unplugin-vue-components/vite'\nimport ElementPlus from 'unplugin-element-plus/vite'\nimport { ElementPlusResolver } from 'unplugin-vue-components/resolvers'"+t.EOL+t.EOL+"export function createElementPlusPlugins(): PluginsOption {\n const vitePlugins: PluginsOption = [\n AutoImport({\n dts: 'src/types/auto-imports.d.ts',\n imports: ['vue'],\n resolvers: [\n ElementPlusResolver({\n importStyle: 'css' \n })\n ]\n }),\n Components({\n dts: 'src/types/components.d.ts',\n dirs: [ 'src/components' ],\n resolvers: [\n ElementPlusResolver({\n importStyle: 'css' \n })\n ]\n }),\n ElementPlus({\n useSource: true\n })"+t.EOL+" ]\n return vitePlugins\n}\n";await s(o.resolve(process.cwd(),"./build/config/ep.ts"),e)}const n="import type {\n AutocompleteProps,\n CascaderProps,\n CheckboxGroupProps,\n CheckboxProps,\n ColorPickerProps,\n DatePickerProps,\n InputNumberProps,\n InputProps,\n InputTagProps,\n MentionProps,\n OptionProps,\n RadioButtonProps,\n RadioGroupProps,\n RadioProps,\n RateProps,\n SelectProps,\n SelectV2Props,\n SliderProps,\n SwitchProps,\n TimePickerDefaultProps,\n TimeSelectProps,\n TransferProps,\n TreeProps,\n UploadProps,\n} from 'element-plus'\n\nexport {}\ndeclare global {\n /** ElDialog 主要属性 */\n type EpDialogAttrs = {\n visible: boolean\n title?: string\n width?: string\n height?: string\n center?: boolean\n showClose?: boolean\n closeOnClickModal?: boolean\n closeOnPressEscape?: boolean\n }\n /** ElementPlus 封装的动态表单组件的名称类型 (25个) */\n type FormName =\n | 'ElAutocomplete'\n | 'ElCascader'\n | 'ElCheckboxGroup'\n | 'ElCheckbox'\n | 'ElCheckboxButton'\n | 'ElColorPicker'\n | 'ElDatePicker'\n | 'ElTimePicker'\n | 'ElInput'\n | 'ElInputNumber'\n | 'ElInputTag'\n | 'ElMention'\n | 'ElRadioGroup'\n | 'ElRadio'\n | 'ElRadioButton'\n | 'ElRate'\n | 'ElSelect'\n | 'ElOption'\n | 'ElSelectV2'\n | 'ElSlider'\n | 'ElSwitch'\n | 'ElTimeSelect'\n | 'ElTransfer'\n | 'ElTreeSelect'\n | 'ElUpload'\n /** ElementPlus 封装的动态表单组件的属性类型 (25个) */\n type FormNameProps = {\n ElAutocomplete: AutocompleteProps\n ElCascader: CascaderProps\n ElCheckboxGroup: CheckboxGroupProps\n ElCheckbox: CheckboxProps\n ElCheckboxButton: CheckboxProps\n ElColorPicker: ColorPickerProps\n ElDatePicker: DatePickerProps\n ElTimePicker: TimePickerDefaultProps\n ElInput: InputProps\n ElInputNumber: InputNumberProps\n ElInputTag: InputTagProps\n ElMention: MentionProps\n ElRadioGroup: RadioGroupProps\n ElRadio: RadioProps\n ElRadioButton: RadioButtonProps\n ElRate: RateProps\n ElSelect: SelectProps\n ElOption: OptionProps\n ElSelectV2: SelectV2Props\n ElSlider: SliderProps\n ElSwitch: SwitchProps\n ElTimeSelect: TimeSelectProps\n ElTransfer: TransferProps\n ElTreeSelect: TreeProps & SelectProps\n ElUpload: UploadProps\n }\n /** ElementPlus 封装动态表单组件类型 */\n type FormBuilderItem<T> = {\n type: FormName\n label?: string\n prop?: keyof T\n span?: number\n props?: FormNameProps[FormName]\n value?: string\n }\n}\n";await s(o.resolve(process.cwd(),"./src/types/ep.d.ts"),n);const l='<script lang="ts">\nimport { defineComponent } from \'vue\'\n\nexport type FormBuilderInstance = InstanceType<ReturnType<typeof defineComponent>>\n<\/script>\n<script setup lang="ts" generic="T extends Record<string, unknown>">\nimport {\n ElAutocomplete,\n ElCascader,\n ElCheckboxGroup,\n ElCheckbox,\n ElCheckboxButton,\n ElColorPicker,\n ElDatePicker,\n ElTimePicker,\n ElInput,\n ElInputNumber,\n ElInputTag,\n ElMention,\n ElRadioGroup,\n ElRadio,\n ElRadioButton,\n ElRate,\n ElSelect,\n ElOption,\n ElSelectV2,\n ElSlider,\n ElSwitch,\n ElTimeSelect,\n ElTransfer,\n ElTreeSelect,\n ElUpload,\n type FormInstance,\n type FormRules,\n type FormValidateCallback,\n} from \'element-plus\'\nimport { useTemplateRef } from \'vue\'\n\ndefineProps<{\n items: FormBuilderItem<T>[]\n rules: FormRules<T>\n}>()\n\nconst form = defineModel<T>({\n required: true,\n default: {} as T,\n})\n\nconst instance = useTemplateRef<FormInstance>(\'formRef\')\n\nconst compMaps = {\n ElAutocomplete,\n ElCascader,\n ElCheckboxGroup,\n ElCheckbox,\n ElCheckboxButton,\n ElColorPicker,\n ElDatePicker,\n ElTimePicker,\n ElInput,\n ElInputNumber,\n ElInputTag,\n ElMention,\n ElRadioGroup,\n ElRadio,\n ElRadioButton,\n ElRate,\n ElSelect,\n ElOption,\n ElSelectV2,\n ElSlider,\n ElSwitch,\n ElTimeSelect,\n ElTransfer,\n ElTreeSelect,\n ElUpload,\n}\n\nfunction getComponent(type: unknown) {\n if (typeof type === \'string\') {\n return compMaps[type as FormName]\n }\n return type\n}\n\nfunction validate(callback?: FormValidateCallback) {\n instance.value?.validate(callback)\n}\n\nfunction resetFields() {\n instance.value?.resetFields()\n}\n\ndefineExpose({\n validate,\n resetFields,\n})\n<\/script>\n\n<template>\n <el-form :model="form" :rules="rules" label-width="auto" ref="formRef">\n <el-row>\n <el-col\n :xs="item.span || 24"\n :sm="item.span || 24"\n :md="item.span || 24"\n :lg="item.span || 24"\n :xl="item.span || 24"\n v-for="item in items"\n :key="item.prop"\n >\n <el-form-item style="padding: 0 30px;" :prop="item.prop as string" :label="item.label">\n <component :is="getComponent(item.type)" v-bind="item.props" v-model="form[item.prop!]">\n </component>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n</template>\n\n<style scoped></style>\n';await s(o.resolve(process.cwd(),"./src/components/FormBuilder.vue"),l)}if(!await r(o.resolve(process.cwd(),"./build/config/index.ts"))){const e="import {"+t.EOL+" defineConfig as defineAppConfig,"+t.EOL+" mergeConfig,"+t.EOL+" loadEnv,"+t.EOL+" type UserConfig,"+t.EOL+" type ConfigEnv,"+t.EOL+" type PluginOption"+t.EOL+"} from 'vite'"+t.EOL+"import { createPlugins } from './plugins'"+(n.pluginElementPlus?t.EOL+"import { createElementPlusPlugins } from './ep'"+t.EOL:t.EOL)+"import { fileURLToPath, URL } from 'node:url'"+t.EOL+t.EOL+"interface ConfigOptions {"+t.EOL+" overrides?: UserConfig"+t.EOL+"}"+t.EOL+t.EOL+"export function defineConfig<T extends ConfigOptions>(options: T) {"+t.EOL+" const { overrides } = options"+t.EOL+" return defineAppConfig("+t.EOL+" (config: ConfigEnv): UserConfig => {"+t.EOL+" const prefixes = ['VITE_']"+t.EOL+" const env = loadEnv(config.mode, process.cwd(), prefixes)"+t.EOL+" const commonConfig: UserConfig = {"+t.EOL+" envPrefix: prefixes,"+t.EOL+" root: process.cwd(),"+t.EOL+" base: '/',"+t.EOL+" publicDir: 'public',"+t.EOL+" server: {"+t.EOL+" host: '0.0.0.0',"+t.EOL+" port: Number(env.VITE_APP_PORT),"+t.EOL+" proxy: {"+t.EOL+" [env.VITE_APP_BASE_URL]: {"+t.EOL+" target: env.VITE_APP_PROXY_URL,"+t.EOL+" changeOrigin: true,"+t.EOL+" rewrite: (path) => path.replace(new RegExp(`^${env.VITE_APP_BASE_URL}`), '')"+t.EOL+" }"+t.EOL+" }"+t.EOL+" },"+t.EOL+" resolve: {"+t.EOL+" alias: {"+t.EOL+" '@': fileURLToPath(new URL('../../src', import.meta.url))"+t.EOL+" }"+t.EOL+" },"+t.EOL+" plugins: ["+t.EOL+" ...createPlugins()"+(n.pluginElementPlus?","+t.EOL+" ...createElementPlusPlugins()"+t.EOL:t.EOL)+" ]"+t.EOL+" }"+t.EOL+" return overrides ? mergeConfig(commonConfig, overrides) : commonConfig"+t.EOL+" }"+t.EOL+" )"+t.EOL+"}"+t.EOL;await s(o.resolve(process.cwd(),"./build/config/index.ts"),e)}const a="import { defineConfig } from './build/config'"+t.EOL+t.EOL+"export default defineConfig({"+t.EOL+" overrides: {"+t.EOL+t.EOL+" }"+t.EOL+"})"+t.EOL;await s(o.resolve(process.cwd(),"./vite.config.ts"),a);const u=await l(o.resolve(process.cwd(),"./package.json"));let E="";n.pluginEnvHelper&&n.pluginScanRoutes?E=`"vite-plugin-env-helper": "^1.1.0",${t.EOL} "vite-plugin-scan-routes": "1.0.2",${t.EOL}`:n.pluginScanRoutes?E=`"vite-plugin-scan-routes": "1.0.2",${t.EOL}`:n.pluginEnvHelper&&(E=`"vite-plugin-env-helper": "^1.1.0",${t.EOL}`),n.pluginElementPlus&&(E+=` "unplugin-auto-import": "^20.0.0",${t.EOL} "unplugin-vue-components": "^29.0.0",${t.EOL} "unplugin-element-plus": "^0.10.0",${t.EOL}`);const m=u.replace(/"vite-plugin-config-helper":\s*"[^"]*"\s*,?\n?/g,E),d=n.pluginElementPlus?m.replace(/"dependencies": \s*\{/g,'"dependencies": {'+t.EOL+' "element-plus": "^2.10.7",'):m;await s(o.resolve(process.cwd(),"./package.json"),d)}}}export{i as configHelper};
1
+ import*as e from"node:fs";import n from"node:fs";import*as o from"node:path";import*as t from"node:os";async function r(e){try{return await n.promises.access(e),!0}catch{return!1}}async function l(e,o){return await new Promise(((o,t)=>{let r="";n.createReadStream(e,{highWaterMark:1048576,encoding:"utf8"}).on("error",(e=>t(e))).on("data",(e=>r+=e)).on("end",(()=>{o(r)}))}))}async function s(e,o,t){return await new Promise(((t,r)=>{n.createWriteStream(e,{encoding:"utf8",highWaterMark:1048576}).on("error",(e=>r(e))).on("finish",(()=>t())).on("open",(function(){this.write(o),this.end()}))}))}function i(n={port:5173,baseUrl:"/api",proxyUrl:"http://192.168.0.193:9999",pluginEnvHelper:!0,pluginScanRoutes:!1,pluginElementPlus:!0}){return{name:"vite-plugin-config-helper",async configResolved(i){if(await r(o.resolve(process.cwd(),"./build/config/index.ts")))return;if(await r(o.resolve(process.cwd(),"./build/config/plugins.ts")))return;e.mkdirSync(process.cwd()+"/build/config",{recursive:!0});const p=await r(o.resolve(process.cwd(),"./.env")),c=["VITE_APP_BASE_URL","VITE_APP_PROXY_URL","VITE_APP_PORT"];if(!(c[0]in i.env))if(p){let e=await l(o.resolve(process.cwd(),"./.env"));e+=t.EOL+`VITE_APP_BASE_URL=${n.baseUrl}`,await s(o.resolve(process.cwd(),"./.env"),e)}else await s(o.resolve(process.cwd(),"./.env"),`VITE_APP_BASE_URL=${n.baseUrl}`);if(!(c[1]in i.env))if(await r(o.resolve(process.cwd(),"./.env"))){let e=await l(o.resolve(process.cwd(),"./.env"));e+=t.EOL+`VITE_APP_PROXY_URL=${n.proxyUrl}`,await s(o.resolve(process.cwd(),"./.env"),e)}else await s(o.resolve(process.cwd(),"./.env"),`VITE_APP_PROXY_URL=${n.proxyUrl}`);if(!(c[2]in i.env))if(await r(o.resolve(process.cwd(),"./.env"))){let e=await l(o.resolve(process.cwd(),"./.env"));e+=t.EOL+`VITE_APP_PORT=${n.port}`,await s(o.resolve(process.cwd(),"./.env"),e)}else await s(o.resolve(process.cwd(),"./.env"),`VITE_APP_PORT=${n.port}`);if(!await r(o.resolve(process.cwd(),"./build/config/plugins.ts"))){const e="import type { PluginsOption } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport vueJsx from '@vitejs/plugin-vue-jsx'\nimport vueDevTools from 'vite-plugin-vue-devtools'"+t.EOL+(n.pluginScanRoutes?"import scanRoutes from 'vite-plugin-scan-routes'":"")+t.EOL+(n.pluginEnvHelper?"import { envHelper } from 'vite-plugin-env-helper'":"")+t.EOL+t.EOL+t.EOL+"export function createPlugins(): PluginsOption {\n const vitePlugins: PluginsOption = [\n vue(),\n vueJsx(),\n vueDevTools()"+(n.pluginScanRoutes?","+t.EOL+" scanRoutes()":"")+(n.pluginEnvHelper?","+t.EOL+" envHelper()"+t.EOL:"")+t.EOL+" ]\n return vitePlugins\n}\n";await s(o.resolve(process.cwd(),"./build/config/plugins.ts"),e)}if(n.pluginElementPlus){if(e.mkdirSync(process.cwd()+"/src/components",{recursive:!0}),e.mkdirSync(process.cwd()+"/src/types",{recursive:!0}),!await r(o.resolve(process.cwd(),"./build/config/ep.ts"))){const e="import type { PluginsOption } from 'vite'\nimport AutoImport from 'unplugin-auto-import/vite'\nimport Components from 'unplugin-vue-components/vite'\nimport ElementPlus from 'unplugin-element-plus/vite'\nimport { ElementPlusResolver } from 'unplugin-vue-components/resolvers'"+t.EOL+t.EOL+"export function createElementPlusPlugins(): PluginsOption {\n const vitePlugins: PluginsOption = [\n AutoImport({\n dts: 'src/types/auto-imports.d.ts',\n imports: ['vue'],\n resolvers: [\n ElementPlusResolver({\n importStyle: 'css' \n })\n ]\n }),\n Components({\n dts: 'src/types/components.d.ts',\n dirs: [ 'src/components' ],\n resolvers: [\n ElementPlusResolver({\n importStyle: 'css' \n })\n ]\n }),\n ElementPlus({\n useSource: true\n })"+t.EOL+" ]\n return vitePlugins\n}\n";await s(o.resolve(process.cwd(),"./build/config/ep.ts"),e)}const n="import type {\n AutocompleteProps,\n CascaderProps,\n CheckboxGroupProps,\n CheckboxProps,\n ColorPickerProps,\n DatePickerProps,\n InputNumberProps,\n InputProps,\n InputTagProps,\n MentionProps,\n OptionProps,\n RadioButtonProps,\n RadioGroupProps,\n RadioProps,\n RateProps,\n SelectProps,\n SelectV2Props,\n SliderProps,\n SwitchProps,\n TimePickerDefaultProps,\n TimeSelectProps,\n TransferProps,\n TreeProps,\n UploadProps,\n} from 'element-plus'\n\nexport {}\ndeclare global {\n /** ElDialog 主要属性 */\n type EpDialogAttrs = {\n visible: boolean\n title?: string\n width?: string\n height?: string\n center?: boolean\n showClose?: boolean\n closeOnClickModal?: boolean\n closeOnPressEscape?: boolean\n }\n /** ElementPlus 封装的动态表单组件的名称类型 (25个) */\n type FormName =\n | 'ElAutocomplete'\n | 'ElCascader'\n | 'ElCheckboxGroup'\n | 'ElCheckbox'\n | 'ElCheckboxButton'\n | 'ElColorPicker'\n | 'ElDatePicker'\n | 'ElTimePicker'\n | 'ElInput'\n | 'ElInputNumber'\n | 'ElInputTag'\n | 'ElMention'\n | 'ElRadioGroup'\n | 'ElRadio'\n | 'ElRadioButton'\n | 'ElRate'\n | 'ElSelect'\n | 'ElOption'\n | 'ElSelectV2'\n | 'ElSlider'\n | 'ElSwitch'\n | 'ElTimeSelect'\n | 'ElTransfer'\n | 'ElTreeSelect'\n | 'ElUpload'\n /** ElementPlus 封装的动态表单组件的属性类型 (25个) */\n type FormNameProps = {\n ElAutocomplete: AutocompleteProps\n ElCascader: CascaderProps\n ElCheckboxGroup: CheckboxGroupProps\n ElCheckbox: CheckboxProps\n ElCheckboxButton: CheckboxProps\n ElColorPicker: ColorPickerProps\n ElDatePicker: DatePickerProps\n ElTimePicker: TimePickerDefaultProps\n ElInput: InputProps\n ElInputNumber: InputNumberProps\n ElInputTag: InputTagProps\n ElMention: MentionProps\n ElRadioGroup: RadioGroupProps\n ElRadio: RadioProps\n ElRadioButton: RadioButtonProps\n ElRate: RateProps\n ElSelect: SelectProps\n ElOption: OptionProps\n ElSelectV2: SelectV2Props\n ElSlider: SliderProps\n ElSwitch: SwitchProps\n ElTimeSelect: TimeSelectProps\n ElTransfer: TransferProps\n ElTreeSelect: TreeProps & SelectProps\n ElUpload: UploadProps\n }\n /** ElementPlus 封装动态表单组件类型 */\n type FormBuilderItem<T> = {\n type: FormName\n label?: string\n prop?: keyof T\n span?: number\n props?: FormNameProps[FormName]\n value?: string\n }\n}\n";await s(o.resolve(process.cwd(),"./src/types/ep.d.ts"),n);const l='<script lang="ts">\nimport { defineComponent } from \'vue\'\n\nexport type FormBuilderInstance = InstanceType<ReturnType<typeof defineComponent>>\n<\/script>\n<script setup lang="ts" generic="T extends Record<string, unknown>">\nimport {\n ElAutocomplete,\n ElCascader,\n ElCheckboxGroup,\n ElCheckbox,\n ElCheckboxButton,\n ElColorPicker,\n ElDatePicker,\n ElTimePicker,\n ElInput,\n ElInputNumber,\n ElInputTag,\n ElMention,\n ElRadioGroup,\n ElRadio,\n ElRadioButton,\n ElRate,\n ElSelect,\n ElOption,\n ElSelectV2,\n ElSlider,\n ElSwitch,\n ElTimeSelect,\n ElTransfer,\n ElTreeSelect,\n ElUpload,\n type FormInstance,\n type FormRules,\n type FormValidateCallback,\n} from \'element-plus\'\nimport { useTemplateRef } from \'vue\'\n\ndefineProps<{\n items: FormBuilderItem<T>[]\n rules: FormRules<T>\n}>()\n\nconst form = defineModel<T>({\n required: true,\n default: {} as T,\n})\n\nconst instance = useTemplateRef<FormInstance>(\'formRef\')\n\nconst compMaps = {\n ElAutocomplete,\n ElCascader,\n ElCheckboxGroup,\n ElCheckbox,\n ElCheckboxButton,\n ElColorPicker,\n ElDatePicker,\n ElTimePicker,\n ElInput,\n ElInputNumber,\n ElInputTag,\n ElMention,\n ElRadioGroup,\n ElRadio,\n ElRadioButton,\n ElRate,\n ElSelect,\n ElOption,\n ElSelectV2,\n ElSlider,\n ElSwitch,\n ElTimeSelect,\n ElTransfer,\n ElTreeSelect,\n ElUpload,\n}\n\nfunction getComponent(type: unknown) {\n if (typeof type === \'string\') {\n return compMaps[type as FormName]\n }\n return type\n}\n\nfunction validate(callback?: FormValidateCallback) {\n instance.value?.validate(callback)\n}\n\nfunction resetFields() {\n instance.value?.resetFields()\n}\n\ndefineExpose({\n validate,\n resetFields,\n})\n<\/script>\n\n<template>\n <el-form :model="form" :rules="rules" label-width="auto" ref="formRef">\n <el-row>\n <el-col\n :xs="item.span || 24"\n :sm="item.span || 24"\n :md="item.span || 24"\n :lg="item.span || 24"\n :xl="item.span || 24"\n v-for="item in items"\n :key="item.prop"\n >\n <el-form-item style="padding: 0 30px;" :prop="item.prop as string" :label="item.label">\n <component :is="getComponent(item.type)" v-bind="item.props" v-model="form[item.prop!]">\n </component>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n</template>\n\n<style scoped></style>\n';await s(o.resolve(process.cwd(),"./src/components/FormBuilder.vue"),l)}if(!await r(o.resolve(process.cwd(),"./build/config/index.ts"))){const e="import {"+t.EOL+" defineConfig as defineAppConfig,"+t.EOL+" mergeConfig,"+t.EOL+" loadEnv,"+t.EOL+" type UserConfig,"+t.EOL+" type ConfigEnv,"+t.EOL+" type PluginOption"+t.EOL+"} from 'vite'"+t.EOL+"import { createPlugins } from './plugins'"+(n.pluginElementPlus?t.EOL+"import { createElementPlusPlugins } from './ep'"+t.EOL:t.EOL)+"import { fileURLToPath, URL } from 'node:url'"+t.EOL+t.EOL+"interface ConfigOptions {"+t.EOL+" overrides?: UserConfig"+t.EOL+"}"+t.EOL+t.EOL+"export function defineConfig<T extends ConfigOptions>(options: T) {"+t.EOL+" const { overrides } = options"+t.EOL+" return defineAppConfig("+t.EOL+" (config: ConfigEnv): UserConfig => {"+t.EOL+" const prefixes = ['VITE_']"+t.EOL+" const env = loadEnv(config.mode, process.cwd(), prefixes)"+t.EOL+" const commonConfig: UserConfig = {"+t.EOL+" envPrefix: prefixes,"+t.EOL+" root: process.cwd(),"+t.EOL+" base: '/',"+t.EOL+" publicDir: 'public',"+t.EOL+" server: {"+t.EOL+" host: '0.0.0.0',"+t.EOL+" port: Number(env.VITE_APP_PORT),"+t.EOL+" proxy: {"+t.EOL+" [env.VITE_APP_BASE_URL]: {"+t.EOL+" target: env.VITE_APP_PROXY_URL,"+t.EOL+" changeOrigin: true,"+t.EOL+" rewrite: (path) => path.replace(new RegExp(`^${env.VITE_APP_BASE_URL}`), '')"+t.EOL+" }"+t.EOL+" }"+t.EOL+" },"+t.EOL+" resolve: {"+t.EOL+" alias: {"+t.EOL+" '@': fileURLToPath(new URL('../../src', import.meta.url))"+t.EOL+" }"+t.EOL+" },"+t.EOL+" plugins: ["+t.EOL+" ...createPlugins()"+(n.pluginElementPlus?","+t.EOL+" ...createElementPlusPlugins()"+t.EOL:t.EOL)+" ]"+t.EOL+" }"+t.EOL+" return overrides ? mergeConfig(commonConfig, overrides) : commonConfig"+t.EOL+" }"+t.EOL+" )"+t.EOL+"}"+t.EOL;await s(o.resolve(process.cwd(),"./build/config/index.ts"),e)}const a="import { defineConfig } from './build/config'"+t.EOL+t.EOL+"export default defineConfig({"+t.EOL+" overrides: {"+t.EOL+t.EOL+" }"+t.EOL+"})"+t.EOL;await s(o.resolve(process.cwd(),"./vite.config.ts"),a);const u=await l(o.resolve(process.cwd(),"./package.json"));let E="";n.pluginEnvHelper&&n.pluginScanRoutes?E=`"vite-plugin-env-helper": "^1.1.0",${t.EOL} "vite-plugin-scan-routes": "1.0.2",${t.EOL}`:n.pluginScanRoutes?E=`"vite-plugin-scan-routes": "1.0.2",${t.EOL}`:n.pluginEnvHelper&&(E=`"vite-plugin-env-helper": "^1.1.0",${t.EOL}`),n.pluginElementPlus&&(E+=` "unplugin-auto-import": "^20.0.0",${t.EOL} "unplugin-vue-components": "^29.0.0",${t.EOL} "unplugin-element-plus": "^0.10.0",${t.EOL}`);const m=u.replace(/"vite-plugin-config-helper":\s*"[^"]*"\s*,?\n?/g,E),d=n.pluginElementPlus?m.replace(/"dependencies": \s*\{/g,'"dependencies": {'+t.EOL+' "element-plus": "^2.10.7",'):m;await s(o.resolve(process.cwd(),"./package.json"),d)}}}export{i as configHelper};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-config-helper",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "private": false,
5
5
  "description": "Generate configuration vite automatically",
6
6
  "keywords": [
@@ -28,9 +28,6 @@
28
28
  }
29
29
  }
30
30
  },
31
- "scripts": {
32
- "dev": "rollup -c"
33
- },
34
31
  "author": "TopFiveGao",
35
32
  "license": "MIT",
36
33
  "devDependencies": {
@@ -43,5 +40,8 @@
43
40
  },
44
41
  "peerDependencies": {
45
42
  "vite": ">=4.0.0"
43
+ },
44
+ "scripts": {
45
+ "dev": "rollup -c"
46
46
  }
47
47
  }