build: 将开发服务器端口设置为随机可用端口
避免端口冲突,提升开发体验。原先的 VITE_PORT 环境变量配置被注释,改为使用端口 0 让系统自动分配。
Showing
1 changed file
with
36 additions
and
28 deletions
| ... | @@ -8,16 +8,16 @@ | ... | @@ -8,16 +8,16 @@ |
| 8 | import { defineConfig, loadEnv } from 'vite' | 8 | import { defineConfig, loadEnv } from 'vite' |
| 9 | import vue from '@vitejs/plugin-vue' | 9 | import vue from '@vitejs/plugin-vue' |
| 10 | import vueJsx from '@vitejs/plugin-vue-jsx' | 10 | import vueJsx from '@vitejs/plugin-vue-jsx' |
| 11 | -import path from "path" | 11 | +import path from 'path' |
| 12 | import Components from 'unplugin-vue-components/vite' | 12 | import Components from 'unplugin-vue-components/vite' |
| 13 | import AutoImport from 'unplugin-auto-import/vite' | 13 | import AutoImport from 'unplugin-auto-import/vite' |
| 14 | import { VantResolver } from 'unplugin-vue-components/resolvers' | 14 | import { VantResolver } from 'unplugin-vue-components/resolvers' |
| 15 | import { createProxy } from './build/proxy' | 15 | import { createProxy } from './build/proxy' |
| 16 | 16 | ||
| 17 | export default ({ mode }) => { | 17 | export default ({ mode }) => { |
| 18 | - const root = process.cwd(); | 18 | + const root = process.cwd() |
| 19 | 19 | ||
| 20 | - const viteEnv = loadEnv(mode, root); | 20 | + const viteEnv = loadEnv(mode, root) |
| 21 | // let isProd = (command === 'serve'); // 情景配置是否为开发模式 serve 或 build | 21 | // let isProd = (command === 'serve'); // 情景配置是否为开发模式 serve 或 build |
| 22 | 22 | ||
| 23 | return defineConfig({ | 23 | return defineConfig({ |
| ... | @@ -36,8 +36,8 @@ export default ({ mode }) => { | ... | @@ -36,8 +36,8 @@ export default ({ mode }) => { |
| 36 | dts: 'src/auto-imports.d.ts', | 36 | dts: 'src/auto-imports.d.ts', |
| 37 | // 解决eslint报错问题 | 37 | // 解决eslint报错问题 |
| 38 | eslintrc: { | 38 | eslintrc: { |
| 39 | - enabled: true | 39 | + enabled: true, |
| 40 | - } | 40 | + }, |
| 41 | }), | 41 | }), |
| 42 | Components({ | 42 | Components({ |
| 43 | resolvers: [VantResolver()], | 43 | resolvers: [VantResolver()], |
| ... | @@ -47,18 +47,19 @@ export default ({ mode }) => { | ... | @@ -47,18 +47,19 @@ export default ({ mode }) => { |
| 47 | publicDir: 'public', // 作为静态资源服务的文件夹。这个目录中的文件会在开发中被服务于 /,在开发模式时,会被拷贝到 outDir 的根目录,并没有转换,永远只是复制到这里。该值可以是文件系统的绝对路径,也可以是相对于项目的根目录路径。 | 47 | publicDir: 'public', // 作为静态资源服务的文件夹。这个目录中的文件会在开发中被服务于 /,在开发模式时,会被拷贝到 outDir 的根目录,并没有转换,永远只是复制到这里。该值可以是文件系统的绝对路径,也可以是相对于项目的根目录路径。 |
| 48 | // cacheDir: '', // 存储缓存文件的目录。此目录下会存储预打包的依赖项或 vite 生成的某些缓存文件,使用缓存可以提高性能。如需重新生成缓存文件,你可以使用 --force 命令行选项或手动删除目录。此选项的值可以是文件的绝对路径,也可以是以项目根目录为基准的相对路径。 | 48 | // cacheDir: '', // 存储缓存文件的目录。此目录下会存储预打包的依赖项或 vite 生成的某些缓存文件,使用缓存可以提高性能。如需重新生成缓存文件,你可以使用 --force 命令行选项或手动删除目录。此选项的值可以是文件的绝对路径,也可以是以项目根目录为基准的相对路径。 |
| 49 | resolve: { | 49 | resolve: { |
| 50 | - alias: { // 将会被传递到 @rollup/plugin-alias 作为 entries 的选项。也可以是一个对象,或一个 { find, replacement } 的数组. 当使用文件系统路径的别名时,请始终使用绝对路径。相对路径的别名值会被原封不动地使用,因此无法被正常解析。 更高级的自定义解析方法可以通过 插件 实现。 | 50 | + alias: { |
| 51 | - "@root": path.resolve(__dirname), | 51 | + // 将会被传递到 @rollup/plugin-alias 作为 entries 的选项。也可以是一个对象,或一个 { find, replacement } 的数组. 当使用文件系统路径的别名时,请始终使用绝对路径。相对路径的别名值会被原封不动地使用,因此无法被正常解析。 更高级的自定义解析方法可以通过 插件 实现。 |
| 52 | - "@": path.resolve(__dirname, "src"), | 52 | + '@root': path.resolve(__dirname), |
| 53 | - "@components": path.resolve(__dirname, "src/components"), | 53 | + '@': path.resolve(__dirname, 'src'), |
| 54 | - "@composables": path.resolve(__dirname, "src/composables"), | 54 | + '@components': path.resolve(__dirname, 'src/components'), |
| 55 | - "@utils": path.resolve(__dirname, "src/utils"), | 55 | + '@composables': path.resolve(__dirname, 'src/composables'), |
| 56 | - "@images": path.resolve(__dirname, "src/assets/images"), | 56 | + '@utils': path.resolve(__dirname, 'src/utils'), |
| 57 | - "@css": path.resolve(__dirname, "src/assets/css"), | 57 | + '@images': path.resolve(__dirname, 'src/assets/images'), |
| 58 | - "@mock": path.resolve(__dirname, "src/assets/mock"), | 58 | + '@css': path.resolve(__dirname, 'src/assets/css'), |
| 59 | - "common": path.resolve(__dirname, "src/common"), | 59 | + '@mock': path.resolve(__dirname, 'src/assets/mock'), |
| 60 | - "@api": path.resolve(__dirname, "src/api"), | 60 | + common: path.resolve(__dirname, 'src/common'), |
| 61 | - "Qs": "qs", | 61 | + '@api': path.resolve(__dirname, 'src/api'), |
| 62 | + Qs: 'qs', | ||
| 62 | }, | 63 | }, |
| 63 | dedupe: ['vue'], // 如果你在你的应用程序中有相同依赖的副本(比如 monorepos),使用这个选项来强制 Vite 总是将列出的依赖关系解析到相同的副本(从项目根目录)。 | 64 | dedupe: ['vue'], // 如果你在你的应用程序中有相同依赖的副本(比如 monorepos),使用这个选项来强制 Vite 总是将列出的依赖关系解析到相同的副本(从项目根目录)。 |
| 64 | // conditions: [''], // 在解析包的 情景导出 时允许的附加条件。 | 65 | // conditions: [''], // 在解析包的 情景导出 时允许的附加条件。 |
| ... | @@ -72,7 +73,7 @@ export default ({ mode }) => { | ... | @@ -72,7 +73,7 @@ export default ({ mode }) => { |
| 72 | // javascriptEnabled: true, | 73 | // javascriptEnabled: true, |
| 73 | // additionalData: `@import "${path.resolve(__dirname, 'src/assets/styles/base.less')}";` | 74 | // additionalData: `@import "${path.resolve(__dirname, 'src/assets/styles/base.less')}";` |
| 74 | // } | 75 | // } |
| 75 | - } // 指定传递给 CSS 预处理器的选项。 | 76 | + }, // 指定传递给 CSS 预处理器的选项。 |
| 76 | }, | 77 | }, |
| 77 | // json: { | 78 | // json: { |
| 78 | // namedExports: true, // 是否支持从 .json 文件中进行按名导入。 | 79 | // namedExports: true, // 是否支持从 .json 文件中进行按名导入。 |
| ... | @@ -84,7 +85,8 @@ export default ({ mode }) => { | ... | @@ -84,7 +85,8 @@ export default ({ mode }) => { |
| 84 | // clearScreen: true, // 设为 false 可以避免 Vite 清屏而错过在终端中打印某些关键信息。命令行模式下请通过 --clearScreen false 设置。 | 85 | // clearScreen: true, // 设为 false 可以避免 Vite 清屏而错过在终端中打印某些关键信息。命令行模式下请通过 --clearScreen false 设置。 |
| 85 | server: { | 86 | server: { |
| 86 | host: '0.0.0.0', | 87 | host: '0.0.0.0', |
| 87 | - port: viteEnv.VITE_PORT, // 本地服务端口 | 88 | + // port: viteEnv.VITE_PORT, // 本地服务端口 |
| 89 | + port: 0, // 使用随机可用端口 | ||
| 88 | // strictPort: true, // 设为true时若端口已被占用则会直接退出, 而不是尝试下一个可用端口 | 90 | // strictPort: true, // 设为true时若端口已被占用则会直接退出, 而不是尝试下一个可用端口 |
| 89 | // https: '', | 91 | // https: '', |
| 90 | // open: false, // 在服务器启动时自动在浏览器中打开应用程序. 当此值为字符串时, 会被当作URL的路径名. | 92 | // open: false, // 在服务器启动时自动在浏览器中打开应用程序. 当此值为字符串时, 会被当作URL的路径名. |
| ... | @@ -111,17 +113,23 @@ export default ({ mode }) => { | ... | @@ -111,17 +113,23 @@ export default ({ mode }) => { |
| 111 | chunkFileNames: 'static/js/[name]-[hash].js', | 113 | chunkFileNames: 'static/js/[name]-[hash].js', |
| 112 | entryFileNames: 'static/js/[name]-[hash].js', | 114 | entryFileNames: 'static/js/[name]-[hash].js', |
| 113 | assetFileNames: 'static/[ext]/[name]-[hash].[ext]', | 115 | assetFileNames: 'static/[ext]/[name]-[hash].[ext]', |
| 114 | - manualChunks: (id) => { | 116 | + manualChunks: id => { |
| 115 | - if (!id.includes('node_modules')) return; | 117 | + if (!id.includes('node_modules')) return |
| 116 | - if (id.includes('@vue-office/docx') || id.includes('@vue-office/excel') || id.includes('@vue-office/pptx')) return 'vue-office'; | 118 | + if ( |
| 117 | - if (id.includes('html2canvas') || id.includes('html-to-image')) return 'image-tools'; | 119 | + id.includes('@vue-office/docx') || |
| 120 | + id.includes('@vue-office/excel') || | ||
| 121 | + id.includes('@vue-office/pptx') | ||
| 122 | + ) | ||
| 123 | + return 'vue-office' | ||
| 124 | + if (id.includes('html2canvas') || id.includes('html-to-image')) return 'image-tools' | ||
| 118 | }, | 125 | }, |
| 119 | }, | 126 | }, |
| 120 | - input: { // 多页面应用模式, 打包时配置,运行配置要处理root | 127 | + input: { |
| 128 | + // 多页面应用模式, 打包时配置,运行配置要处理root | ||
| 121 | main: path.resolve(__dirname, 'index.html'), | 129 | main: path.resolve(__dirname, 'index.html'), |
| 122 | // mono1: path.resolve(__dirname, 'src/packages/mono1/index.html'), | 130 | // mono1: path.resolve(__dirname, 'src/packages/mono1/index.html'), |
| 123 | // mono2: path.resolve(__dirname, 'src/packages/mono2/index.html'), | 131 | // mono2: path.resolve(__dirname, 'src/packages/mono2/index.html'), |
| 124 | - } | 132 | + }, |
| 125 | }, | 133 | }, |
| 126 | }, | 134 | }, |
| 127 | optimizeDeps: { | 135 | optimizeDeps: { |
| ... | @@ -129,6 +137,6 @@ export default ({ mode }) => { | ... | @@ -129,6 +137,6 @@ export default ({ mode }) => { |
| 129 | // exclude: [], | 137 | // exclude: [], |
| 130 | include: ['jquery', 'moment', 'axios', 'pinia', 'vue-router', 'vant'], // 默认情况下,不在 node_modules 中的,链接的包不会被预构建。使用此选项可强制预构建链接的包。 | 138 | include: ['jquery', 'moment', 'axios', 'pinia', 'vue-router', 'vant'], // 默认情况下,不在 node_modules 中的,链接的包不会被预构建。使用此选项可强制预构建链接的包。 |
| 131 | // keepNames: false, // 打包器有时需要重命名符号以避免冲突。 设置此项为 true 可以在函数和类上保留 name 属性。 若想获取更多详情,请参阅 keepNames | 139 | // keepNames: false, // 打包器有时需要重命名符号以避免冲突。 设置此项为 true 可以在函数和类上保留 name 属性。 若想获取更多详情,请参阅 keepNames |
| 132 | - } | 140 | + }, |
| 133 | - }); | 141 | + }) |
| 134 | -}; | 142 | +} | ... | ... |
-
Please register or login to post a comment