@gx-design-vue/create-gx-cli 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -1
- package/src/main.js +1 -0
- package/template-design-pro/.editorconfig +19 -0
- package/template-design-pro/.env +2 -0
- package/template-design-pro/.env.development +18 -0
- package/template-design-pro/.env.pro +32 -0
- package/template-design-pro/.env.production +32 -0
- package/template-design-pro/.env.test +20 -0
- package/template-design-pro/.eslintignore +16 -0
- package/template-design-pro/.eslintrc.js +64 -0
- package/template-design-pro/.gitpod.yml +6 -0
- package/template-design-pro/.husky/pre-commit +4 -0
- package/template-design-pro/.prettierignore +9 -0
- package/template-design-pro/.stylelintignore +3 -0
- package/template-design-pro/.yarnclean +48 -0
- package/template-design-pro/LICENSE +21 -0
- package/template-design-pro/README.md +111 -0
- package/template-design-pro/build/constant.ts +6 -0
- package/template-design-pro/build/generate/generateModifyVars.ts +18 -0
- package/template-design-pro/build/getConfigFileName.ts +13 -0
- package/template-design-pro/build/script/buildConf.ts +44 -0
- package/template-design-pro/build/script/postBuild.ts +25 -0
- package/template-design-pro/build/script/reSetRootHtml.ts +20 -0
- package/template-design-pro/build/utils.ts +85 -0
- package/template-design-pro/build/vite/cdn.ts +7 -0
- package/template-design-pro/build/vite/optimizer.ts +22 -0
- package/template-design-pro/build/vite/plugin/autoImport.ts +18 -0
- package/template-design-pro/build/vite/plugin/compress.ts +35 -0
- package/template-design-pro/build/vite/plugin/hmr.ts +25 -0
- package/template-design-pro/build/vite/plugin/html.ts +47 -0
- package/template-design-pro/build/vite/plugin/index.ts +89 -0
- package/template-design-pro/build/vite/plugin/mock.ts +20 -0
- package/template-design-pro/build/vite/plugin/pwa.ts +37 -0
- package/template-design-pro/build/vite/plugin/styleImport.ts +129 -0
- package/template-design-pro/build/vite/plugin/visualizer.ts +17 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-antd-theme/index.ts +24 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/createMockServer.ts +303 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/createProdMockServer.ts +93 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/index.ts +68 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/types.ts +30 -0
- package/template-design-pro/build/vite/plugin/vite-plugin-mock/utils.ts +26 -0
- package/template-design-pro/commitlint.config.js +32 -0
- package/template-design-pro/config/config.ts +14 -0
- package/template-design-pro/config/default/animate.ts +30 -0
- package/template-design-pro/config/default/defaultSettings.ts +75 -0
- package/template-design-pro/config/default/network.ts +16 -0
- package/template-design-pro/config/default/proxy.ts +26 -0
- package/template-design-pro/config/default/theme.ts +43 -0
- package/template-design-pro/config/default/themeColor.ts +62 -0
- package/template-design-pro/index.html +45 -0
- package/template-design-pro/jest.config.mjs +36 -0
- package/template-design-pro/mock/_createProductionServer.ts +19 -0
- package/template-design-pro/mock/_util.ts +55 -0
- package/template-design-pro/mock/controller/menu.ts +85 -0
- package/template-design-pro/mock/controller/notices.ts +114 -0
- package/template-design-pro/mock/system/dict.ts +60 -0
- package/template-design-pro/mock/system/user.ts +218 -0
- package/template-design-pro/package.json +151 -0
- package/template-design-pro/pnpm-lock.yaml +9913 -0
- package/template-design-pro/postcss.config.js +5 -0
- package/template-design-pro/prettier.config.js +18 -0
- package/template-design-pro/public/resource/css/index.css +171 -0
- package/template-design-pro/public/resource/img/favicon.ico +0 -0
- package/template-design-pro/public/resource/img/logo.png +0 -0
- package/template-design-pro/public/resource/img/pro_icon.svg +5 -0
- package/template-design-pro/public/resource/img/pwa-192x192.png +0 -0
- package/template-design-pro/public/resource/img/pwa-512x512.png +0 -0
- package/template-design-pro/src/App.vue +47 -0
- package/template-design-pro/src/assets/error_images/403.png +0 -0
- package/template-design-pro/src/assets/error_images/404.png +0 -0
- package/template-design-pro/src/assets/error_images/cloud.png +0 -0
- package/template-design-pro/src/assets/login_images/login_background.svg +69 -0
- package/template-design-pro/src/assets/logo.png +0 -0
- package/template-design-pro/src/assets/menu_font/iconfont.css +94 -0
- package/template-design-pro/src/assets/menu_font/iconfont.eot +0 -0
- package/template-design-pro/src/assets/menu_font/iconfont.js +1 -0
- package/template-design-pro/src/assets/menu_font/iconfont.json +142 -0
- package/template-design-pro/src/assets/menu_font/iconfont.svg +57 -0
- package/template-design-pro/src/assets/menu_font/iconfont.ttf +0 -0
- package/template-design-pro/src/assets/menu_font/iconfont.woff +0 -0
- package/template-design-pro/src/assets/menu_font/iconfont.woff2 +0 -0
- package/template-design-pro/src/assets/menu_font/index.less +94 -0
- package/template-design-pro/src/common/global.ts +1 -0
- package/template-design-pro/src/components/GDesign/ProLayout/BasicLayout.less +80 -0
- package/template-design-pro/src/components/GDesign/ProLayout/BasicLayout.tsx +342 -0
- package/template-design-pro/src/components/GDesign/ProLayout/PageLoading.tsx +20 -0
- package/template-design-pro/src/components/GDesign/ProLayout/RenderTypings.ts +31 -0
- package/template-design-pro/src/components/GDesign/ProLayout/RouteContext.tsx +82 -0
- package/template-design-pro/src/components/GDesign/ProLayout/WrapContent.tsx +69 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalFooter/index.tsx +88 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/DefaultHeader.tsx +189 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/Header.less +8 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/index.tsx +105 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/props.ts +69 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/style.less +144 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/LogoContent/index.tsx +81 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/LogoContent/props.ts +29 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/index.tsx +384 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/props.ts +15 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/style.less +79 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeIcon.tsx +148 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.module.less +115 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.tsx +154 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.less +39 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.tsx +133 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/index.tsx +190 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/props.ts +48 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/style.less +128 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/typings.ts +0 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/AvatarDropdown.tsx +63 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/HeaderSearch.tsx +122 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/headerSearch.less +30 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/index.tsx +95 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/style.less +90 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/BlockCheckbox.tsx +70 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/LayoutSetting.tsx +107 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/ThemeColor.tsx +68 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/index.tsx +346 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/BaseMenu.tsx +224 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/SiderMenu.tsx +224 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/index.tsx +43 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/props.ts +112 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/style.less +262 -0
- package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/typings.ts +44 -0
- package/template-design-pro/src/components/GDesign/ProLayout/default.less +2 -0
- package/template-design-pro/src/components/GDesign/ProLayout/defaultSettings.ts +121 -0
- package/template-design-pro/src/components/GDesign/ProLayout/hooks/context/index.ts +45 -0
- package/template-design-pro/src/components/GDesign/ProLayout/index.ts +43 -0
- package/template-design-pro/src/components/GDesign/ProLayout/props.ts +57 -0
- package/template-design-pro/src/components/GDesign/ProLayout/style.less +272 -0
- package/template-design-pro/src/components/GDesign/ProLayout/typings.ts +1 -0
- package/template-design-pro/src/components/GDesign/ProLayout/utils/getMenuData.ts +31 -0
- package/template-design-pro/src/components/GDesign/ProLayout/utils/index.ts +94 -0
- package/template-design-pro/src/components/GDesign/ProLayout/utils/isImg/index.ts +6 -0
- package/template-design-pro/src/components/GDesign/ProLayout/utils/isUrl/index.ts +5 -0
- package/template-design-pro/src/components/GDesign/Result/index.tsx +142 -0
- package/template-design-pro/src/components/GDesign/Result/style.less +140 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Bar/index.tsx +56 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Bar/props.ts +23 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Thumb/index.tsx +164 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/components/Thumb/props.ts +11 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/context.ts +10 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/index.tsx +200 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/props.ts +65 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/style.less +85 -0
- package/template-design-pro/src/components/GDesign/Scrollbars/util.ts +40 -0
- package/template-design-pro/src/components/GDesign/utils/index.ts +7 -0
- package/template-design-pro/src/components/PageLoading/index.tsx +44 -0
- package/template-design-pro/src/components/PageTransition/index.vue +98 -0
- package/template-design-pro/src/components/index.ts +6 -0
- package/template-design-pro/src/core/ant-design/index.ts +14 -0
- package/template-design-pro/src/core/gx-admin-design/index.ts +7 -0
- package/template-design-pro/src/core/gx-admin-directives/index.ts +8 -0
- package/template-design-pro/src/core/gx-admin-directives/permission.ts +28 -0
- package/template-design-pro/src/core/gx-design/index.ts +7 -0
- package/template-design-pro/src/core/gx-pro-design/index.ts +10 -0
- package/template-design-pro/src/core/index.ts +27 -0
- package/template-design-pro/src/design/ant-design/index.less +4 -0
- package/template-design-pro/src/design/ant-design/layout.less +29 -0
- package/template-design-pro/src/design/ant-design/menu.less +55 -0
- package/template-design-pro/src/design/ant-design/table.less +67 -0
- package/template-design-pro/src/design/ant-design/tooltip.less +13 -0
- package/template-design-pro/src/design/color.less +1 -0
- package/template-design-pro/src/design/config.less +5 -0
- package/template-design-pro/src/design/index.less +41 -0
- package/template-design-pro/src/design/mixin.less +66 -0
- package/template-design-pro/src/design/normalize.less +390 -0
- package/template-design-pro/src/global.less +15 -0
- package/template-design-pro/src/hooks/core/index.ts +3 -0
- package/template-design-pro/src/hooks/core/useRequest/index.ts +70 -0
- package/template-design-pro/src/hooks/core/useRequest/typings.ts +0 -0
- package/template-design-pro/src/hooks/event/index.ts +3 -0
- package/template-design-pro/src/hooks/event/useClipboard.ts +14 -0
- package/template-design-pro/src/hooks/system/index.ts +5 -0
- package/template-design-pro/src/hooks/system/useDict.ts +62 -0
- package/template-design-pro/src/hooks/system/usePermissions.ts +39 -0
- package/template-design-pro/src/hooks/typings.ts +17 -0
- package/template-design-pro/src/layout/BasicLayout.vue +104 -0
- package/template-design-pro/src/layout/BlankLayout.vue +5 -0
- package/template-design-pro/src/layout/ContentView.vue +76 -0
- package/template-design-pro/src/layout/IframeView.vue +1 -0
- package/template-design-pro/src/layout/UserLayout.vue +7 -0
- package/template-design-pro/src/main.ts +34 -0
- package/template-design-pro/src/plugins/index.ts +3 -0
- package/template-design-pro/src/router/guard/index.ts +84 -0
- package/template-design-pro/src/router/guard/permissions.ts +73 -0
- package/template-design-pro/src/router/guard/stateGuard.ts +11 -0
- package/template-design-pro/src/router/helper/routeHelper.ts +244 -0
- package/template-design-pro/src/router/helper/utils.ts +19 -0
- package/template-design-pro/src/router/index.ts +30 -0
- package/template-design-pro/src/router/routes/index.ts +85 -0
- package/template-design-pro/src/router/routes/modules/workplace.ts +19 -0
- package/template-design-pro/src/services/common/index.ts +11 -0
- package/template-design-pro/src/services/controller/router.ts +10 -0
- package/template-design-pro/src/services/controller/user.ts +35 -0
- package/template-design-pro/src/services/system/dictData.ts +10 -0
- package/template-design-pro/src/services/system/notices.ts +9 -0
- package/template-design-pro/src/store/index.ts +32 -0
- package/template-design-pro/src/store/modules/dict.ts +27 -0
- package/template-design-pro/src/store/modules/permission.ts +19 -0
- package/template-design-pro/src/store/modules/routes.ts +110 -0
- package/template-design-pro/src/store/modules/settings.ts +102 -0
- package/template-design-pro/src/store/modules/tabsRouter.ts +73 -0
- package/template-design-pro/src/store/modules/user.ts +153 -0
- package/template-design-pro/src/utils/accessToken.ts +93 -0
- package/template-design-pro/src/utils/crypto.ts +39 -0
- package/template-design-pro/src/utils/env.ts +52 -0
- package/template-design-pro/src/utils/fetchFile.ts +79 -0
- package/template-design-pro/src/utils/index.ts +127 -0
- package/template-design-pro/src/utils/pageTitle.ts +17 -0
- package/template-design-pro/src/utils/request/XHR.ts +131 -0
- package/template-design-pro/src/utils/request/axiosCancel.ts +60 -0
- package/template-design-pro/src/utils/request/checkStatus.ts +26 -0
- package/template-design-pro/src/utils/request/index.ts +145 -0
- package/template-design-pro/src/utils/request/typings.ts +114 -0
- package/template-design-pro/src/utils/storage.ts +194 -0
- package/template-design-pro/src/utils/uploadFile.ts +26 -0
- package/template-design-pro/src/utils/util.ts +278 -0
- package/template-design-pro/src/utils/validate.ts +221 -0
- package/template-design-pro/src/views/Iframe/index.vue +76 -0
- package/template-design-pro/src/views/MenuOne/index.vue +15 -0
- package/template-design-pro/src/views/MenuTwo/index.vue +13 -0
- package/template-design-pro/src/views/exception/403/index.vue +9 -0
- package/template-design-pro/src/views/exception/404/index.vue +9 -0
- package/template-design-pro/src/views/user/login/index.vue +110 -0
- package/template-design-pro/src/views/user/login/style.less +38 -0
- package/template-design-pro/stylelint.config.js +106 -0
- package/template-design-pro/tests/__mocks__/fileMock.ts +1 -0
- package/template-design-pro/tests/__mocks__/styleMock.ts +1 -0
- package/template-design-pro/tests/__mocks__/workerMock.ts +5 -0
- package/template-design-pro/tests/server/README.md +15 -0
- package/template-design-pro/tests/server/controller/FileController.ts +18 -0
- package/template-design-pro/tests/server/controller/UserController.ts +15 -0
- package/template-design-pro/tests/server/ecosystem.config.js +18 -0
- package/template-design-pro/tests/server/index.ts +63 -0
- package/template-design-pro/tests/server/nodemon.json +8 -0
- package/template-design-pro/tests/server/package.json +36 -0
- package/template-design-pro/tests/server/routes.ts +23 -0
- package/template-design-pro/tests/server/service/FileService.ts +54 -0
- package/template-design-pro/tests/server/service/UserService.ts +25 -0
- package/template-design-pro/tests/server/tsconfig.json +15 -0
- package/template-design-pro/tests/server/utils.ts +9 -0
- package/template-design-pro/tests/server/yarn.lock +2955 -0
- package/template-design-pro/tests/test.spec.ts +16 -0
- package/template-design-pro/tsconfig.json +47 -0
- package/template-design-pro/types/auto-imports.d.ts +61 -0
- package/template-design-pro/types/config.d.ts +100 -0
- package/template-design-pro/types/global.d.ts +103 -0
- package/template-design-pro/types/gx-components.d.ts +24 -0
- package/template-design-pro/types/index.d.ts +13 -0
- package/template-design-pro/types/mock.d.ts +23 -0
- package/template-design-pro/types/module.d.ts +16 -0
- package/template-design-pro/types/response.d.ts +15 -0
- package/template-design-pro/types/route.d.ts +89 -0
- package/template-design-pro/vite.config.ts +136 -0
- package/template-design-pro/yarn.lock +9697 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
import type { GetManualChunk } from 'rollup'
|
2
|
+
|
3
|
+
const vendorLibs: { match: string[]; output: string }[] = [
|
4
|
+
{
|
5
|
+
match: ['ant-design-vue'],
|
6
|
+
output: 'ant-design-vue',
|
7
|
+
},
|
8
|
+
{
|
9
|
+
match: ['@gx-design-vue/pro-table'],
|
10
|
+
output: 'pro-table',
|
11
|
+
},
|
12
|
+
]
|
13
|
+
|
14
|
+
export const configManualChunk: GetManualChunk = (id: string) => {
|
15
|
+
if (/[\\/]node_modules[\\/]/.test(id)) {
|
16
|
+
const matchItem = vendorLibs.find((item) => {
|
17
|
+
const reg = new RegExp(`[\\/]node_modules[\\/]_?(${item.match.join('|')})(.*)`, 'ig')
|
18
|
+
return reg.test(id)
|
19
|
+
})
|
20
|
+
return matchItem ? matchItem.output : null
|
21
|
+
}
|
22
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import autoImport from 'unplugin-auto-import/vite'
|
2
|
+
|
3
|
+
export function createAutoImport() {
|
4
|
+
return [
|
5
|
+
autoImport({
|
6
|
+
include: [
|
7
|
+
/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
|
8
|
+
/\.vue$/, /\.vue\?vue/, // .vue
|
9
|
+
/\.md$/, // .md
|
10
|
+
],
|
11
|
+
imports: [
|
12
|
+
'vue',
|
13
|
+
'vue-router'
|
14
|
+
],
|
15
|
+
dts: 'types/auto-imports.d.ts'
|
16
|
+
})
|
17
|
+
]
|
18
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
/**
|
2
|
+
* Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated
|
3
|
+
* https://github.com/anncwb/vite-plugin-compression
|
4
|
+
*/
|
5
|
+
import type { Plugin } from 'vite'
|
6
|
+
|
7
|
+
import compressPlugin from 'vite-plugin-compression'
|
8
|
+
|
9
|
+
export function configCompressPlugin(
|
10
|
+
compress: 'gzip' | 'brotli' | 'none',
|
11
|
+
deleteOriginFile = false
|
12
|
+
): Plugin | Plugin[] {
|
13
|
+
const compressList = compress.split(',')
|
14
|
+
|
15
|
+
const plugins: Plugin[] = []
|
16
|
+
|
17
|
+
if (compressList.includes('gzip')) {
|
18
|
+
plugins.push(
|
19
|
+
compressPlugin({
|
20
|
+
ext: '.gz',
|
21
|
+
deleteOriginFile
|
22
|
+
})
|
23
|
+
)
|
24
|
+
}
|
25
|
+
if (compressList.includes('brotli')) {
|
26
|
+
plugins.push(
|
27
|
+
compressPlugin({
|
28
|
+
ext: '.br',
|
29
|
+
algorithm: 'brotliCompress',
|
30
|
+
deleteOriginFile
|
31
|
+
})
|
32
|
+
)
|
33
|
+
}
|
34
|
+
return plugins
|
35
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import type { Plugin } from 'vite'
|
2
|
+
|
3
|
+
/**
|
4
|
+
* TODO
|
5
|
+
* Temporarily solve the Vite circular dependency problem, and wait for a better solution to fix it later. I don't know what problems this writing will bring.
|
6
|
+
* @returns
|
7
|
+
*/
|
8
|
+
|
9
|
+
export function configHmrPlugin(): Plugin {
|
10
|
+
return {
|
11
|
+
name: 'singleHMR',
|
12
|
+
handleHotUpdate({ modules, file }) {
|
13
|
+
if (file.match(/xml$/)) return []
|
14
|
+
|
15
|
+
modules.forEach((m) => {
|
16
|
+
if (!m.url.match(/\.(css|less)/)) {
|
17
|
+
m.importedModules = new Set()
|
18
|
+
m.importers = new Set()
|
19
|
+
}
|
20
|
+
})
|
21
|
+
|
22
|
+
return modules
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
/**
|
2
|
+
* Plugin to minimize and use ejs template syntax in index.html.
|
3
|
+
* https://github.com/anncwb/vite-plugin-html
|
4
|
+
*/
|
5
|
+
import { PluginOption } from 'vite'
|
6
|
+
|
7
|
+
import { createHtmlPlugin } from 'vite-plugin-html'
|
8
|
+
|
9
|
+
import pkg from '../../../package.json'
|
10
|
+
import { GLOB_CONFIG_FILE_NAME } from '../../constant'
|
11
|
+
import config from '../../../config/config'
|
12
|
+
import { cdnConf } from '../cdn'
|
13
|
+
|
14
|
+
const { title, publicPath, useCdn } = config.defaultSettings
|
15
|
+
|
16
|
+
export function configHtmlPlugin(_: ViteEnv, isBuild: boolean) {
|
17
|
+
|
18
|
+
const path = publicPath.endsWith('/') ? publicPath : `${publicPath}/`
|
19
|
+
|
20
|
+
const getAppConfigSrc = () => {
|
21
|
+
return `${path || '/'}${GLOB_CONFIG_FILE_NAME}?v=${pkg.version}-${new Date().getTime()}`
|
22
|
+
}
|
23
|
+
|
24
|
+
const htmlPlugin: PluginOption[] = createHtmlPlugin({
|
25
|
+
minify: isBuild,
|
26
|
+
inject: {
|
27
|
+
// Inject data into ejs template
|
28
|
+
data: {
|
29
|
+
VUE_APP_TITLE: title || 'GX Pro Admin',
|
30
|
+
injectScript: useCdn ? cdnConf.js : [],
|
31
|
+
injectLink: useCdn ? cdnConf.css : [],
|
32
|
+
},
|
33
|
+
// Embed the generated app.config.js file
|
34
|
+
tags: isBuild
|
35
|
+
? [
|
36
|
+
{
|
37
|
+
tag: 'script',
|
38
|
+
attrs: {
|
39
|
+
src: getAppConfigSrc()
|
40
|
+
}
|
41
|
+
}
|
42
|
+
]
|
43
|
+
: []
|
44
|
+
}
|
45
|
+
})
|
46
|
+
return htmlPlugin
|
47
|
+
}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
import type { Plugin, PluginOption } from 'vite'
|
2
|
+
|
3
|
+
import vue from '@vitejs/plugin-vue'
|
4
|
+
import vueJsx from '@vitejs/plugin-vue-jsx'
|
5
|
+
import legacy from '@vitejs/plugin-legacy'
|
6
|
+
|
7
|
+
import vueSetupExtend from 'vite-plugin-vue-setup-extend'
|
8
|
+
|
9
|
+
import { presetAttributify, presetUno, transformerDirectives } from 'unocss'
|
10
|
+
import Unocss from 'unocss/vite'
|
11
|
+
|
12
|
+
import { configHtmlPlugin } from './html'
|
13
|
+
import { configPwaConfig } from './pwa'
|
14
|
+
import { configMockPlugin } from './mock'
|
15
|
+
import { createAutoImport } from './autoImport'
|
16
|
+
import { configCompressPlugin } from './compress'
|
17
|
+
import { configStyleImportPlugin } from './styleImport'
|
18
|
+
import { configVisualizerConfig } from './visualizer'
|
19
|
+
import { configHmrPlugin } from './hmr'
|
20
|
+
import createAntdVariableTheme from './vite-plugin-antd-theme'
|
21
|
+
|
22
|
+
export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
|
23
|
+
const {
|
24
|
+
VITE_APP_ENV,
|
25
|
+
VITE_USE_THEME,
|
26
|
+
VITE_USE_MOCK,
|
27
|
+
VITE_LEGACY,
|
28
|
+
VITE_BUILD_COMPRESS,
|
29
|
+
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE
|
30
|
+
} = viteEnv
|
31
|
+
|
32
|
+
const isDev = VITE_APP_ENV === 'dev'
|
33
|
+
|
34
|
+
const vitePlugins: (Plugin | PluginOption[])[] = [
|
35
|
+
// have to
|
36
|
+
vue(),
|
37
|
+
// have to
|
38
|
+
vueJsx()
|
39
|
+
]
|
40
|
+
|
41
|
+
// vite-plugin-windicss
|
42
|
+
vitePlugins.push(Unocss({
|
43
|
+
presets: [
|
44
|
+
presetAttributify(),
|
45
|
+
presetUno()
|
46
|
+
],
|
47
|
+
transformers: [ transformerDirectives() ]
|
48
|
+
}))
|
49
|
+
|
50
|
+
// vite-plugin-vue-setup-extend
|
51
|
+
vitePlugins.push(vueSetupExtend())
|
52
|
+
|
53
|
+
!isBuild && vitePlugins.push(configHmrPlugin())
|
54
|
+
|
55
|
+
// @vitejs/plugin-legacy
|
56
|
+
VITE_LEGACY && isBuild && vitePlugins.push(legacy())
|
57
|
+
|
58
|
+
// vite-plugin-html
|
59
|
+
vitePlugins.push(configHtmlPlugin(viteEnv, isBuild))
|
60
|
+
|
61
|
+
// vite-plugin-antd-theme
|
62
|
+
vitePlugins.push(createAntdVariableTheme(VITE_USE_THEME))
|
63
|
+
|
64
|
+
// vite-plugin-style-import
|
65
|
+
vitePlugins.push(configStyleImportPlugin(VITE_USE_THEME))
|
66
|
+
|
67
|
+
// vite-plugin-mock
|
68
|
+
const useMock = isDev || VITE_USE_MOCK
|
69
|
+
useMock && vitePlugins.push(configMockPlugin(isBuild))
|
70
|
+
|
71
|
+
// rollup-plugin-visualizer
|
72
|
+
vitePlugins.push(configVisualizerConfig())
|
73
|
+
|
74
|
+
// unplugin-auto-import/vite
|
75
|
+
vitePlugins.push(createAutoImport())
|
76
|
+
|
77
|
+
// The following plugins only work in the production environment
|
78
|
+
if (isBuild) {
|
79
|
+
// rollup-plugin-gzip
|
80
|
+
vitePlugins.push(
|
81
|
+
configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE)
|
82
|
+
)
|
83
|
+
|
84
|
+
// vite-plugin-pwa
|
85
|
+
vitePlugins.push(configPwaConfig(viteEnv))
|
86
|
+
}
|
87
|
+
|
88
|
+
return vitePlugins
|
89
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
/**
|
2
|
+
* Mock plugin for development and production.
|
3
|
+
* https://github.com/anncwb/vite-plugin-mock
|
4
|
+
*/
|
5
|
+
import { viteMockServe } from './vite-plugin-mock'
|
6
|
+
|
7
|
+
export function configMockPlugin(isBuild: boolean) {
|
8
|
+
return viteMockServe({
|
9
|
+
ignore: /^\_/,
|
10
|
+
mockPath: 'mock',
|
11
|
+
watchFiles: true,
|
12
|
+
localEnabled: !isBuild,
|
13
|
+
prodEnabled: isBuild,
|
14
|
+
injectCode: `
|
15
|
+
import { setupProdMockServer } from '../mock/_createProductionServer';
|
16
|
+
|
17
|
+
setupProdMockServer();
|
18
|
+
`
|
19
|
+
})
|
20
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
/**
|
2
|
+
* Zero-config PWA for Vite
|
3
|
+
* https://github.com/antfu/vite-plugin-pwa
|
4
|
+
*/
|
5
|
+
|
6
|
+
import { VitePWA } from 'vite-plugin-pwa'
|
7
|
+
|
8
|
+
import config from '../../../config/config'
|
9
|
+
|
10
|
+
export function configPwaConfig(env: ViteEnv) {
|
11
|
+
const { title, shortName } = config.defaultSettings
|
12
|
+
const { VITE_USE_PWA } = env
|
13
|
+
|
14
|
+
if (VITE_USE_PWA) {
|
15
|
+
// vite-plugin-pwa
|
16
|
+
const pwaPlugin = VitePWA({
|
17
|
+
manifest: {
|
18
|
+
name: title || 'GX Pro Admin',
|
19
|
+
short_name: shortName || 'gx_pro_admin',
|
20
|
+
icons: [
|
21
|
+
{
|
22
|
+
src: './resource/img/pwa-192x192.png',
|
23
|
+
sizes: '192x192',
|
24
|
+
type: 'image/png'
|
25
|
+
},
|
26
|
+
{
|
27
|
+
src: './resource/img/pwa-512x512.png',
|
28
|
+
sizes: '512x512',
|
29
|
+
type: 'image/png'
|
30
|
+
}
|
31
|
+
]
|
32
|
+
}
|
33
|
+
})
|
34
|
+
return pwaPlugin
|
35
|
+
}
|
36
|
+
return []
|
37
|
+
}
|
@@ -0,0 +1,129 @@
|
|
1
|
+
import { createStyleImportPlugin } from 'vite-plugin-style-import'
|
2
|
+
|
3
|
+
const component = [
|
4
|
+
{
|
5
|
+
name: 'g-pro-table',
|
6
|
+
lib: 'pro-table',
|
7
|
+
styleName: 'proTable'
|
8
|
+
},
|
9
|
+
{
|
10
|
+
name: 'g-swiper',
|
11
|
+
lib: 'swiper',
|
12
|
+
styleName: 'style'
|
13
|
+
},
|
14
|
+
{
|
15
|
+
name: 'g-image',
|
16
|
+
lib: 'image',
|
17
|
+
styleName: 'style'
|
18
|
+
},
|
19
|
+
{
|
20
|
+
name: 'g-color',
|
21
|
+
lib: 'color-picker',
|
22
|
+
styleName: 'colorPicker'
|
23
|
+
},
|
24
|
+
{
|
25
|
+
name: 'g-pro-field',
|
26
|
+
lib: 'pro-field',
|
27
|
+
styleName: 'proField'
|
28
|
+
},
|
29
|
+
{
|
30
|
+
name: 'g-pro-card',
|
31
|
+
lib: 'pro-card',
|
32
|
+
styleName: 'proCard'
|
33
|
+
},
|
34
|
+
{
|
35
|
+
name: 'g-pro-modal',
|
36
|
+
lib: 'pro-modal',
|
37
|
+
styleName: 'proModal'
|
38
|
+
},
|
39
|
+
{
|
40
|
+
name: 'g-pro-form',
|
41
|
+
lib: 'pro-form',
|
42
|
+
styleName: 'proForm'
|
43
|
+
}
|
44
|
+
]
|
45
|
+
|
46
|
+
export function configStyleImportPlugin(isUseTheme: boolean) {
|
47
|
+
const styleImportPlugin = createStyleImportPlugin({
|
48
|
+
libs: [
|
49
|
+
isUseTheme ? {
|
50
|
+
libraryName: ''
|
51
|
+
} : {
|
52
|
+
libraryName: 'ant-design-vue',
|
53
|
+
esModule: true,
|
54
|
+
resolveStyle: (name) => {
|
55
|
+
// 这里是无需额外引入样式文件的“子组件”列表
|
56
|
+
const ignoreList = [
|
57
|
+
'anchor-link',
|
58
|
+
'sub-menu',
|
59
|
+
'menu-item',
|
60
|
+
'menu-divider',
|
61
|
+
'menu-item-group',
|
62
|
+
'breadcrumb-item',
|
63
|
+
'breadcrumb-separator',
|
64
|
+
'form-item',
|
65
|
+
'step',
|
66
|
+
'select-option',
|
67
|
+
'select-opt-group',
|
68
|
+
'card-grid',
|
69
|
+
'card-meta',
|
70
|
+
'collapse-panel',
|
71
|
+
'descriptions-item',
|
72
|
+
'list-item',
|
73
|
+
'list-item-meta',
|
74
|
+
'table-column',
|
75
|
+
'table-column-group',
|
76
|
+
'tab-pane',
|
77
|
+
'tab-content',
|
78
|
+
'timeline-item',
|
79
|
+
'tree-node',
|
80
|
+
'skeleton-input',
|
81
|
+
'skeleton-avatar',
|
82
|
+
'skeleton-title',
|
83
|
+
'skeleton-paragraph',
|
84
|
+
'skeleton-image',
|
85
|
+
'skeleton-button'
|
86
|
+
]
|
87
|
+
// 这里是需要额外引入样式的子组件列表
|
88
|
+
// 单独引入子组件时需引入组件样式,否则会在打包后导致子组件样式丢失
|
89
|
+
const replaceList = {
|
90
|
+
'typography-text': 'typography',
|
91
|
+
'typography-title': 'typography',
|
92
|
+
'typography-paragraph': 'typography',
|
93
|
+
'typography-link': 'typography',
|
94
|
+
'dropdown-button': 'dropdown',
|
95
|
+
'input-password': 'input',
|
96
|
+
'input-search': 'input',
|
97
|
+
'input-group': 'input',
|
98
|
+
'radio-group': 'radio',
|
99
|
+
'checkbox-group': 'checkbox',
|
100
|
+
'layout-sider': 'layout',
|
101
|
+
'layout-content': 'layout',
|
102
|
+
'layout-footer': 'layout',
|
103
|
+
'layout-header': 'layout',
|
104
|
+
'month-picker': 'date-picker',
|
105
|
+
'range-picker': 'date-picker',
|
106
|
+
'image-preview-group': 'image'
|
107
|
+
}
|
108
|
+
|
109
|
+
return ignoreList.includes(name)
|
110
|
+
? ''
|
111
|
+
: replaceList.hasOwnProperty(name)
|
112
|
+
? `ant-design-vue/es/${replaceList[name]}/style/index`
|
113
|
+
: `ant-design-vue/es/${name}/style/index`
|
114
|
+
}
|
115
|
+
}
|
116
|
+
].concat(component.map(item => {
|
117
|
+
return {
|
118
|
+
libraryName: `@gx-design-vue/${item.lib}`,
|
119
|
+
esModule: true,
|
120
|
+
resolveStyle: (name) => {
|
121
|
+
if (name)
|
122
|
+
return `@gx-design-vue/${item.lib}/dist/${item.styleName}.less`
|
123
|
+
return ''
|
124
|
+
}
|
125
|
+
}
|
126
|
+
}))
|
127
|
+
})
|
128
|
+
return styleImportPlugin
|
129
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/**
|
2
|
+
* Package file volume analysis
|
3
|
+
*/
|
4
|
+
import visualizer from 'rollup-plugin-visualizer'
|
5
|
+
import { isReportMode } from '../../utils'
|
6
|
+
|
7
|
+
export function configVisualizerConfig() {
|
8
|
+
if (isReportMode()) {
|
9
|
+
return visualizer({
|
10
|
+
filename: './node_modules/.cache/visualizer/stats.html',
|
11
|
+
open: true,
|
12
|
+
gzipSize: true,
|
13
|
+
brotliSize: true
|
14
|
+
}) as Plugin
|
15
|
+
}
|
16
|
+
return []
|
17
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import type { Plugin } from 'vite'
|
2
|
+
import { normalizePath } from 'vite'
|
3
|
+
import { getDefaultPath, fileExists } from '../../../utils'
|
4
|
+
|
5
|
+
export default function createAntdVariableTheme(useTheme): Plugin {
|
6
|
+
let defaultPath = getDefaultPath()
|
7
|
+
if (!fileExists(defaultPath)) {
|
8
|
+
defaultPath = getDefaultPath(false)
|
9
|
+
if (!fileExists(defaultPath)) {
|
10
|
+
defaultPath = ''
|
11
|
+
}
|
12
|
+
}
|
13
|
+
const defaultEnter = normalizePath(defaultPath)
|
14
|
+
return {
|
15
|
+
name: 'vite:antd-variable-theme',
|
16
|
+
enforce: 'pre',
|
17
|
+
async transform(code: string, id: string) {
|
18
|
+
if (!id.endsWith(defaultEnter) || !useTheme) return null
|
19
|
+
return {
|
20
|
+
code: `${code}\nimport('ant-design-vue/dist/antd.variable.min.css')`
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|