create-young-proj 0.1.0 → 0.2.0

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 (61) hide show
  1. package/README.md +11 -2
  2. package/dist/index.mjs +2702 -42
  3. package/package.json +3 -3
  4. package/template-admin-server/package.json +2 -2
  5. package/template-vue-admin/build/custom-plugin.ts +30 -0
  6. package/template-vue-admin/build/index.ts +7 -0
  7. package/template-vue-admin/build/plugins.ts +59 -0
  8. package/template-vue-admin/package.json +1 -1
  9. package/template-vue-admin/src/main.ts +4 -4
  10. package/template-vue-admin/src/modules/4-auth.ts +8 -4
  11. package/template-vue-admin/src/shims.d.ts +12 -0
  12. package/template-vue-admin/tsconfig.node.json +1 -1
  13. package/template-vue-admin/vite.config.ts +4 -49
  14. package/template-vue-mobile/.vscode/base.code-snippets +24 -0
  15. package/template-vue-mobile/.vscode/extensions.json +10 -0
  16. package/template-vue-mobile/.vscode/settings.json +7 -0
  17. package/template-vue-mobile/Dockerfile +42 -0
  18. package/template-vue-mobile/README.md +71 -0
  19. package/template-vue-mobile/_env +6 -0
  20. package/template-vue-mobile/_gitignore +30 -0
  21. package/template-vue-mobile/boot.mjs +16 -0
  22. package/template-vue-mobile/build/custom-plugin.ts +30 -0
  23. package/template-vue-mobile/build/index.ts +7 -0
  24. package/template-vue-mobile/build/plugins.ts +68 -0
  25. package/template-vue-mobile/config/.devrc +2 -0
  26. package/template-vue-mobile/config/.onlinerc +1 -0
  27. package/template-vue-mobile/config/.testrc +1 -0
  28. package/template-vue-mobile/index.html +25 -0
  29. package/template-vue-mobile/nitro.config.ts +19 -0
  30. package/template-vue-mobile/package.json +48 -0
  31. package/template-vue-mobile/plugins/env.ts +26 -0
  32. package/template-vue-mobile/public/vite.svg +1 -0
  33. package/template-vue-mobile/rome.json +24 -0
  34. package/template-vue-mobile/routes/[...all].ts +11 -0
  35. package/template-vue-mobile/routes/get/env.ts +25 -0
  36. package/template-vue-mobile/src/App.vue +29 -0
  37. package/template-vue-mobile/src/auto-components.d.ts +24 -0
  38. package/template-vue-mobile/src/auto-imports.d.ts +289 -0
  39. package/template-vue-mobile/src/components/Init.vue +36 -0
  40. package/template-vue-mobile/src/global.d.ts +7 -0
  41. package/template-vue-mobile/src/hooks/useVerifyCode.ts +46 -0
  42. package/template-vue-mobile/src/layouts/blank.vue +9 -0
  43. package/template-vue-mobile/src/layouts/default.vue +27 -0
  44. package/template-vue-mobile/src/layouts/sub.vue +20 -0
  45. package/template-vue-mobile/src/main.ts +35 -0
  46. package/template-vue-mobile/src/modules/1-router.ts +40 -0
  47. package/template-vue-mobile/src/modules/2-pinia.ts +10 -0
  48. package/template-vue-mobile/src/modules/3-net.ts +46 -0
  49. package/template-vue-mobile/src/modules/4-auth.ts +64 -0
  50. package/template-vue-mobile/src/views/[...all_404].vue +557 -0
  51. package/template-vue-mobile/src/views/base/login.vue +110 -0
  52. package/template-vue-mobile/src/views/base/resetPasswd.vue +88 -0
  53. package/template-vue-mobile/src/views/index.vue +18 -0
  54. package/template-vue-mobile/src/views/my.vue +15 -0
  55. package/template-vue-mobile/src/views/sub.vue +18 -0
  56. package/template-vue-mobile/src/vite-env.d.ts +43 -0
  57. package/template-vue-mobile/tsconfig.json +21 -0
  58. package/template-vue-mobile/tsconfig.node.json +9 -0
  59. package/template-vue-mobile/unocss.config.ts +47 -0
  60. package/template-vue-mobile/vite.config.ts +32 -0
  61. package/template-vue-mobile/yarn.lock +4395 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-young-proj",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "create project from template",
5
5
  "main": "index.mjs",
6
6
  "bin": {
@@ -45,8 +45,8 @@
45
45
  "scripts": {
46
46
  "dev": "unbuild --stub",
47
47
  "build": "unbuild",
48
- "format": "rome format * --write",
49
- "release": "changelogen && bumpp --commit --tag --no-push",
48
+ "format": "rome format . --write",
49
+ "release": "changelogen && bumpp --no-push",
50
50
  "push": "pnpm publish --access public"
51
51
  }
52
52
  }
@@ -45,7 +45,7 @@
45
45
  "start": "cross-env NODE_ENV=production node ./boot.mjs",
46
46
  "dev": "cross-env NODE_ENV=local midway-bin dev --ts",
47
47
  "build": "midway-bin build -c",
48
- "format": "rome format . --write"
48
+ "format": "rome format * --write"
49
49
  },
50
50
  "midway-bin-clean": [
51
51
  ".vscode/.tsbuildinfo",
@@ -57,4 +57,4 @@
57
57
  },
58
58
  "author": "BluesYoung-web",
59
59
  "license": "MIT"
60
- }
60
+ }
@@ -0,0 +1,30 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-01-10 14:43:13
4
+ * @LastEditTime: 2023-01-10 15:11:44
5
+ * @Description:
6
+ */
7
+ import { networkInterfaces } from 'node:os';
8
+
9
+ const virtualModuleId = 'virtual:local-server';
10
+ const ips = networkInterfaces();
11
+ export const localServer = `http://${ips['eth0'][0].address}:3000`;
12
+
13
+ /**
14
+ * 获取本机 ip 地址,拼接开发时的服务地址
15
+ */
16
+ export const serverPlugin = () => {
17
+ return {
18
+ name: 'local-server',
19
+ resolveId(id) {
20
+ if (id === virtualModuleId) {
21
+ return virtualModuleId;
22
+ }
23
+ },
24
+ load(id) {
25
+ if (id === virtualModuleId) {
26
+ return `export const server = '${localServer}';`;
27
+ }
28
+ },
29
+ };
30
+ };
@@ -0,0 +1,7 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-01-10 14:46:42
4
+ * @LastEditTime: 2023-01-10 14:46:43
5
+ * @Description:
6
+ */
7
+ export * from './plugins';
@@ -0,0 +1,59 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-01-10 14:26:01
4
+ * @LastEditTime: 2023-01-10 15:18:31
5
+ * @Description:
6
+ */
7
+ import type { PluginOption } from 'vite';
8
+ import { serverPlugin } from './custom-plugin';
9
+ import vue from '@vitejs/plugin-vue';
10
+ import vueJsx from '@vitejs/plugin-vue-jsx';
11
+ import legacy from '@vitejs/plugin-legacy';
12
+ import Unocss from 'unocss/vite';
13
+ // 自动导入
14
+ import AutoImport from 'unplugin-auto-import/vite';
15
+ import AutoComopnents from 'unplugin-vue-components/vite';
16
+ import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
17
+ // 自动路由及布局
18
+ import Pages from 'vite-plugin-pages';
19
+ import Layouts from 'vite-plugin-vue-layouts';
20
+
21
+ export { localServer } from './custom-plugin';
22
+
23
+ export const usePlugins = () => {
24
+ return [
25
+ serverPlugin(),
26
+ vue(),
27
+ vueJsx(),
28
+ Pages({
29
+ extensions: ['vue', 'tsx'],
30
+ dirs: 'src/views',
31
+ exclude: ['**/components/*.{vue,tsx}', '_*'],
32
+ }),
33
+ Layouts({ defaultLayout: 'default/index' }),
34
+ AutoComopnents({
35
+ dirs: ['src/components'],
36
+ dts: './src/auto-components.d.ts',
37
+ extensions: ['vue', 'tsx'],
38
+ resolvers: [ElementPlusResolver()],
39
+ }),
40
+ AutoImport({
41
+ dts: './src/auto-imports.d.ts',
42
+ imports: [
43
+ 'vue',
44
+ 'vue-router',
45
+ '@vueuse/core',
46
+ 'pinia',
47
+ {
48
+ 'element-plus': ['ElMessage', 'ElMessageBox', 'ElLoadingService'],
49
+ },
50
+ ],
51
+ }),
52
+ Unocss(),
53
+ // 不生成同名 polyfill 文件,打包速度翻倍
54
+ // 如果出现兼容问题,可以删除此配置
55
+ legacy({
56
+ // renderLegacyChunks: false
57
+ }),
58
+ ] as PluginOption[];
59
+ };
@@ -8,7 +8,7 @@
8
8
  "dev:server": "nitropack dev",
9
9
  "build": "vite build && nitropack build",
10
10
  "preview": "vite preview --host",
11
- "format": "rome format .* --write",
11
+ "format": "rome format * --write",
12
12
  "release": "changelogen && bumpp --no-push"
13
13
  },
14
14
  "dependencies": {
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * @Author: zhangyang
3
3
  * @Date: 2022-12-03 15:57:40
4
- * @LastEditTime: 2023-01-04 14:30:48
4
+ * @LastEditTime: 2023-01-10 15:09:29
5
5
  * @Description:
6
6
  */
7
7
  // polyfill
@@ -13,6 +13,7 @@ import 'uno.css';
13
13
  import 'element-plus/dist/index.css';
14
14
 
15
15
  import { createApp } from 'vue';
16
+ import { server } from 'virtual:local-server';
16
17
  import App from './App.vue';
17
18
 
18
19
  (async () => {
@@ -23,9 +24,8 @@ import App from './App.vue';
23
24
  viteEnv = import.meta.env;
24
25
  console.log('🚀 ~ file: main.ts ~ line 19 ~ viteEnv', viteEnv);
25
26
  } else if (import.meta.env.DEV) {
26
- // 开发环境,内网其他设备访问请切换为局域网 ip
27
- // 端口号与环境变量的 SERVER_PORT 保持一致
28
- viteEnv = await (await fetch(`http://127.0.0.1:3000/get/env`)).json();
27
+ // 开发环境,局域网 ip
28
+ viteEnv = await (await fetch(server + '/get/env')).json();
29
29
  console.log('🚀 ~ file: main.ts ~ line 24 ~ viteEnv', viteEnv);
30
30
  } else {
31
31
  // 部署环境,需要配合 nginx 使用
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * @Author: zhangyang
3
3
  * @Date: 2022-03-01 19:40:13
4
- * @LastEditTime: 2023-01-09 09:19:41
4
+ * @LastEditTime: 2023-01-11 10:32:35
5
5
  * @Description: 权限校验
6
6
  */
7
7
  import { router } from './1-router';
@@ -84,7 +84,6 @@ export const install: UserModule = (app) => {
84
84
  (await casdoorLogin(code, state)) as UserKey;
85
85
  getToken() && (await generateNavData());
86
86
  location.search = '';
87
- changeTitle(to);
88
87
  return true;
89
88
  } else
90
89
  */
@@ -99,12 +98,10 @@ export const install: UserModule = (app) => {
99
98
  await generateNavData();
100
99
  if (hasPermission(to.meta.authPath)) {
101
100
  // 拥有对应页面的权限
102
- changeTitle(to);
103
101
  return true;
104
102
  }
105
103
  if (!hasPermission(to.meta.authPath)) {
106
104
  // 已登录,并且无权限
107
- changeTitle(from);
108
105
  return '/403';
109
106
  }
110
107
  } else {
@@ -117,6 +114,13 @@ export const install: UserModule = (app) => {
117
114
 
118
115
  router.afterEach((to) => {
119
116
  const { addView } = useTagsStore();
117
+ const nav = FlatNavArr.value.find((item) => item.component === to.path);
118
+ if (nav && nav.title) {
119
+ // console.log('before: ', to.meta);
120
+ to.meta.title = nav.title as string;
121
+ // console.log('after: ', to.meta);
122
+ }
120
123
  addView(to);
124
+ changeTitle(to);
121
125
  });
122
126
  };
@@ -0,0 +1,12 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-01-10 15:08:44
4
+ * @LastEditTime: 2023-01-10 15:08:44
5
+ * @Description:
6
+ */
7
+ declare module 'virtual:local-server' {
8
+ /**
9
+ * 本地服务地址
10
+ */
11
+ export const server: string;
12
+ }
@@ -5,5 +5,5 @@
5
5
  "moduleResolution": "Node",
6
6
  "allowSyntheticDefaultImports": true
7
7
  },
8
- "include": ["vite.config.ts"]
8
+ "include": ["vite.config.ts", "build/**/*.ts"]
9
9
  }
@@ -1,26 +1,13 @@
1
1
  /*
2
2
  * @Author: zhangyang
3
3
  * @Date: 2022-12-03 15:57:40
4
- * @LastEditTime: 2023-01-05 14:14:02
4
+ * @LastEditTime: 2023-01-10 15:12:20
5
5
  * @Description:
6
6
  */
7
7
  import { fileURLToPath, URL } from 'node:url';
8
8
  import { defineConfig, loadEnv } from 'vite';
9
9
  import type { ConfigEnv, UserConfigExport } from 'vite';
10
-
11
- import vue from '@vitejs/plugin-vue';
12
- import vueJsx from '@vitejs/plugin-vue-jsx';
13
- import legacy from '@vitejs/plugin-legacy';
14
- import Unocss from 'unocss/vite';
15
-
16
- // 自动导入
17
- import AutoImport from 'unplugin-auto-import/vite';
18
- import AutoComopnents from 'unplugin-vue-components/vite';
19
- import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
20
-
21
- // 自动路由及布局
22
- import Pages from 'vite-plugin-pages';
23
- import Layouts from 'vite-plugin-vue-layouts';
10
+ import { usePlugins, localServer } from './build';
24
11
 
25
12
  // https://vitejs.dev/config/
26
13
  export default ({ command, mode }: ConfigEnv): UserConfigExport => {
@@ -29,39 +16,7 @@ export default ({ command, mode }: ConfigEnv): UserConfigExport => {
29
16
  console.log('🚀 ~ file: vite.config.ts ~ line 36 ~ viteEnv', viteEnv);
30
17
  return defineConfig({
31
18
  base: './',
32
- plugins: [
33
- vue(),
34
- vueJsx(),
35
- Pages({
36
- extensions: ['vue', 'tsx'],
37
- dirs: 'src/views',
38
- exclude: ['**/components/*.{vue,tsx}', '_*'],
39
- }),
40
- Layouts({ defaultLayout: 'default/index' }),
41
- AutoComopnents({
42
- dirs: ['src/components'],
43
- dts: './src/auto-components.d.ts',
44
- extensions: ['vue', 'tsx'],
45
- resolvers: [ElementPlusResolver()],
46
- }),
47
- AutoImport({
48
- dts: './src/auto-imports.d.ts',
49
- imports: [
50
- 'vue',
51
- 'vue-router',
52
- '@vueuse/core',
53
- 'pinia',
54
- {
55
- 'element-plus': ['ElMessage', 'ElMessageBox', 'ElLoadingService'],
56
- },
57
- ],
58
- }),
59
- Unocss(),
60
- legacy({
61
- // 不生成同名 polyfill 文件,打包速度翻倍,如果出现兼容问题,可以删除此配置
62
- // renderLegacyChunks: false
63
- }),
64
- ],
19
+ plugins: usePlugins(),
65
20
  resolve: {
66
21
  alias: {
67
22
  '@': fileURLToPath(new URL('./src', import.meta.url)),
@@ -70,7 +25,7 @@ export default ({ command, mode }: ConfigEnv): UserConfigExport => {
70
25
  server: {
71
26
  host: true,
72
27
  proxy: {
73
- '/api': 'http://192.168.10.168:3000',
28
+ '/api': localServer,
74
29
  },
75
30
  },
76
31
  });
@@ -0,0 +1,24 @@
1
+ {
2
+ "mobile base": {
3
+ "prefix": "base",
4
+ "body": [
5
+ "<route lang=\"yaml\">",
6
+ "meta:",
7
+ " auth: true",
8
+ " title: $1",
9
+ " layout: sub",
10
+ "</route>",
11
+ "",
12
+ "<script lang=\"ts\" setup>",
13
+ "$2",
14
+ "</script>",
15
+ "",
16
+ "<template>",
17
+ " <div>",
18
+ " $1",
19
+ " </div>",
20
+ "</template>",
21
+ ],
22
+ "description": "mobile base"
23
+ }
24
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "recommendations": [
3
+ "vue.volar",
4
+ "rome.rome",
5
+ "obkoro1.korofileheader",
6
+ "vue.vscode-typescript-vue-plugin",
7
+ "antfu.unocss",
8
+ "voorjaar.windicss-intellisense"
9
+ ]
10
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "editor.formatOnSave": true,
3
+ "editor.defaultFormatter": "rome.rome",
4
+ "[vue]": {
5
+ "editor.defaultFormatter": "Vue.volar"
6
+ }
7
+ }
@@ -0,0 +1,42 @@
1
+ # 拉取基础镜像
2
+ FROM node:16-alpine as builder
3
+
4
+ # 维护者
5
+ MAINTAINER BluesYoung "bluesyoung_web@163.com"
6
+
7
+ # 工作目录
8
+ WORKDIR /app
9
+
10
+ # 没有压缩包,首选 COPY,如果需要自动解包或下载,则使用 ADD
11
+
12
+ # 对比依赖是否变更
13
+ COPY package.json yarn.lock /app/
14
+
15
+ # 设置npm仓库 + 下载依赖,上面的文件如果没有变化则跳过下载,直接使用缓存
16
+ RUN npm config set registry https://registry.npmmirror.com && \
17
+ yarn config set registry https://registry.npmmirror.com && \
18
+ yarn
19
+
20
+ # 加入代码
21
+ COPY . /app
22
+ # 打包
23
+ RUN yarn build
24
+
25
+ # 打包完成,构建最终的极简镜像
26
+ FROM node:16-alpine
27
+
28
+ # 工作目录
29
+ WORKDIR /app
30
+
31
+ # 复制运行需要的文件[及依赖]
32
+ # 直接复制源代码
33
+ COPY boot.mjs /app/
34
+ COPY config /app/config
35
+ # 复制上一步的打包产物
36
+ COPY --from=builder /app/.output /app/.output
37
+
38
+ # 暴露指定的端口号,暂不需要
39
+ # EXPOSE 3001
40
+
41
+ # 启动容器时运行的命令
42
+ ENTRYPOINT ["node", "boot.mjs"]
@@ -0,0 +1,71 @@
1
+ # h5 模板
2
+
3
+ ## 用户代码片段(页面模板)
4
+
5
+ 模板 | 触发关键字
6
+ --- | ---
7
+ 基础页面 | `base`
8
+
9
+ ## **Docker 部署**
10
+
11
+ - 同一份代码,可以根据运行时的环境变量决定具体表现
12
+ - `node` 服务:
13
+ - 托管前端静态资源
14
+ - 根据环境变量读取对应的配置文件,并以接口的形式暴露给前端
15
+ - 跨域接口代理
16
+
17
+ 环境变量
18
+
19
+ ```sh
20
+ # 部署环境 dev | test | online
21
+ DEPLOY_ENV=dev
22
+ # DEPLOY_ENV=test
23
+ # DEPLOY_ENV=online
24
+ # node 服务监听的端口号
25
+ LISTEN_PORT=3000
26
+ ```
27
+
28
+ ### 本地开发
29
+
30
+ **确保上述的环境变量存在**
31
+
32
+ 启动服务端程序 `yarn dev:server`
33
+
34
+ 启动客户端程序 `yarn dev`
35
+
36
+ ### 打包预览
37
+
38
+ `yarn build`
39
+
40
+ **确保上述的环境变量存在!!!**
41
+
42
+ `node boot.mjs`
43
+
44
+ ### 配置文件
45
+
46
+ 存放于 `config` 目录下的 `.${env}rc` 文件,`env` 为对应的环境标识
47
+
48
+ ## 常规部署
49
+
50
+ - `nginx` 托管前端静态资源
51
+ - 每次打包时读取环境变量,打包完成之后不可变
52
+ - 使用 `nginx` 代理跨域
53
+
54
+ 环境变量
55
+
56
+ ```sh
57
+ # 设置静态部署
58
+ VITE_USE_DEFAULT_DEPLOY_METHOD=true
59
+ # 其他的环境变量,根据环境区分
60
+ VITE_TITLE=标题名称
61
+ ```
62
+
63
+ ### 本地开发
64
+
65
+ **确保上述的环境变量存在**,然后 `yarn dev` 即可
66
+
67
+ ### 打包预览
68
+
69
+ `yarn build`
70
+
71
+ `yarn preview`
@@ -0,0 +1,6 @@
1
+ # 部署环境 dev | test | online
2
+ DEPLOY_ENV=dev
3
+ # DEPLOY_ENV=test
4
+ # DEPLOY_ENV=online
5
+ # node 服务监听的端口号
6
+ LISTEN_PORT=3003
@@ -0,0 +1,30 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ dist
12
+ dist-ssr
13
+ *.local
14
+ .env
15
+
16
+ # Editor directories and files
17
+ .vscode/*
18
+ !.vscode/extensions.json
19
+ !.vscode/settings.json
20
+ !.vscode/*.code-snippets
21
+ .idea
22
+ .DS_Store
23
+ *.suo
24
+ *.ntvs*
25
+ *.njsproj
26
+ *.sln
27
+ *.sw?
28
+
29
+ .nitro
30
+ .output
@@ -0,0 +1,16 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2022-09-16 11:48:05
4
+ * @LastEditTime: 2022-12-29 16:21:59
5
+ * @Description:
6
+ */
7
+ (async () => {
8
+ const env = process.env.DEPLOY_ENV;
9
+ const listenPort = process.env.LISTEN_PORT || 3003;
10
+ console.log('当前环境:', env);
11
+ console.log('服务监听端口:', listenPort);
12
+
13
+ process.env.NITRO_PORT = listenPort;
14
+
15
+ await import('./.output/server/index.mjs');
16
+ })();
@@ -0,0 +1,30 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-01-10 14:43:13
4
+ * @LastEditTime: 2023-01-10 15:11:44
5
+ * @Description:
6
+ */
7
+ import { networkInterfaces } from 'node:os';
8
+
9
+ const virtualModuleId = 'virtual:local-server';
10
+ const ips = networkInterfaces();
11
+ export const localServer = `http://${ips['eth0'][0].address}:3000`;
12
+
13
+ /**
14
+ * 获取本机 ip 地址,拼接开发时的服务地址
15
+ */
16
+ export const serverPlugin = () => {
17
+ return {
18
+ name: 'local-server',
19
+ resolveId(id) {
20
+ if (id === virtualModuleId) {
21
+ return virtualModuleId;
22
+ }
23
+ },
24
+ load(id) {
25
+ if (id === virtualModuleId) {
26
+ return `export const server = '${localServer}';`;
27
+ }
28
+ },
29
+ };
30
+ };
@@ -0,0 +1,7 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-01-10 14:46:42
4
+ * @LastEditTime: 2023-01-10 14:46:43
5
+ * @Description:
6
+ */
7
+ export * from './plugins';
@@ -0,0 +1,68 @@
1
+ /*
2
+ * @Author: zhangyang
3
+ * @Date: 2023-01-10 14:26:01
4
+ * @LastEditTime: 2023-01-13 15:54:55
5
+ * @Description:
6
+ */
7
+ import type { PluginOption } from 'vite';
8
+ import { serverPlugin } from './custom-plugin';
9
+ import vue from '@vitejs/plugin-vue';
10
+ import vueJsx from '@vitejs/plugin-vue-jsx';
11
+ import legacy from '@vitejs/plugin-legacy';
12
+ import Unocss from 'unocss/vite';
13
+ // 自动导入
14
+ import AutoImport from 'unplugin-auto-import/vite';
15
+ import AutoComopnents from 'unplugin-vue-components/vite';
16
+ import { VantResolver } from 'unplugin-vue-components/resolvers';
17
+ // 自动路由及布局
18
+ import Pages from 'vite-plugin-pages';
19
+ import Layouts from 'vite-plugin-vue-layouts';
20
+
21
+ export { localServer } from './custom-plugin';
22
+
23
+ export const usePlugins = () => {
24
+ return [
25
+ serverPlugin(),
26
+ vue(),
27
+ vueJsx(),
28
+ Pages({
29
+ extensions: ['vue', 'tsx'],
30
+ dirs: 'src/views',
31
+ exclude: ['**/components/*.{vue,tsx}', '_*'],
32
+ }),
33
+ Layouts({ defaultLayout: 'default' }),
34
+ AutoComopnents({
35
+ dirs: ['src/components'],
36
+ dts: './src/auto-components.d.ts',
37
+ extensions: ['vue', 'tsx'],
38
+ resolvers: [VantResolver()],
39
+ }),
40
+ AutoImport({
41
+ dts: './src/auto-imports.d.ts',
42
+ imports: [
43
+ 'vue',
44
+ 'vue-router',
45
+ '@vueuse/core',
46
+ 'pinia',
47
+ {
48
+ vant: [
49
+ 'showToast',
50
+ 'showLoadingToast',
51
+ 'showFailToast',
52
+ 'showSuccessToast',
53
+ 'showDialog',
54
+ 'showConfirmDialog',
55
+ 'showImagePreview',
56
+ 'showNotify',
57
+ ],
58
+ },
59
+ ],
60
+ }),
61
+ Unocss(),
62
+ // 不生成同名 polyfill 文件,打包速度翻倍
63
+ // 如果出现兼容问题,可以删除此配置
64
+ legacy({
65
+ // renderLegacyChunks: false
66
+ }),
67
+ ] as PluginOption[];
68
+ };
@@ -0,0 +1,2 @@
1
+ VITE_TITLE = Mobile-dev
2
+ VITE_ENABLE_VCONSOLE = true
@@ -0,0 +1 @@
1
+ VITE_TITLE = Mobile-online
@@ -0,0 +1 @@
1
+ VITE_TITLE = Mobile-test
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <link rel="icon" type="image/svg+xml" href="/vite.svg" />
7
+ <meta id="viewportMeta" name="viewport"
8
+ content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0,viewport-fit=cover">
9
+ <title>Vite + Vue + TS</title>
10
+ <script>
11
+ // hack globalThis
12
+ this.globalThis || (this.globalThis = this);
13
+ window.onerror = function (e) {
14
+ console.log(e);
15
+ window.alert('您的浏览器版本过低,请尝试使用其他浏览器或将浏览器升级至最新版本后重试!');
16
+ }
17
+ </script>
18
+ </head>
19
+
20
+ <body>
21
+ <div id="app"></div>
22
+ <script type="module" src="/src/main.ts"></script>
23
+ </body>
24
+
25
+ </html>