代码拉取完成,页面将自动刷新
同步操作将从 飞翔的小菜鸟/vite-vue3-multipage-main 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import viteEslint from 'vite-plugin-eslint' //引入eslint
import viteStylelint from '@amatlash/vite-plugin-stylelint'
import viteImagemin from 'vite-plugin-imagemin' //引入图片压缩插件
import path from 'path'
// 引入多页面配置文件
const project = require('./scripts/multiPages.json')
// 获取是否是生产环境
// const isProduction = process.env.NODE_ENV === 'production'
// 多页面配置开始-------------------------------------- 获取pnpm run dev后缀来运行对应的项目
const npm_config_project = process.env.npm_config_project
let filterProjects = []
if (npm_config_project) {
// 这一步操作主要是处理要单独打包和单独运行的配置项
filterProjects = project.filter((ele) => {
// 过滤出用户输入的单独打包的配置项
return ele.chunk.toLowerCase() === npm_config_project.toLowerCase()
})
console.log(`--------单独构建:${filterProjects[0]['chunkName']}--------`)
} else {
filterProjects = project
}
/** 多页面配置 */
const multiPages = (p) => {
const pages = {}
p.forEach((ele) => {
const htmlUrl = path.resolve(
__dirname,
`src/Project/${ele.chunk}/index.html`
)
pages[ele.chunk] = htmlUrl
})
console.log(pages)
return pages
}
/**多页面打包 */
const multiBuild = (p) => {
const buildOutputConfigs = []
p.forEach((ele) => {
// 配置多出口打包
buildOutputConfigs.push({
dir: `dist/${ele.chunk}/`,
assetFileNames: '[ext]/[name]-[hash].[ext]',
chunkFileNames: 'js/[name]-[hash].js',
entryFileNames: 'js/[name]-[hash].js'
})
})
return buildOutputConfigs
}
// 多页面配置结束 --------------------------------------
// https://vitejs.dev/config/
export default defineConfig({
//把root指向/src/Project/,编译时在此目录下编译, build时生成在dist内生成对应的文件
root: `./src/Project/${filterProjects[0]['chunk']}`,
//设置静态资源相对路径,index.html和login.html等入口文件的静态资源读取相对路径
base: './',
plugins: [
vue(),
viteEslint(),
viteStylelint({ exclude: /node_modules/ }),
viteImagemin({
// 无损压缩配置,无损压缩下图片质量不会变差
optipng: {
optimizationLevel: 7
},
// 有损压缩配置,有损压缩下图片质量可能会变差
pngquant: {
quality: [0.8, 0.9]
},
// svg 优化
svgo: {
plugins: [
{
name: 'removeViewBox'
},
{
name: 'removeEmptyAttrs',
active: false
}
]
}
})
],
resolve: {
alias: {
'@': path.join(__dirname, './src'),
'@Project': path.join(__dirname, './src/Project')
}
},
build: {
rollupOptions: {
//配置多页应用程序入口文件
input: multiPages(filterProjects),
//打包到目标目录
output: multiBuild(filterProjects)
}
},
server: {
host: 'localhost', // 指定服务器主机名
port: 8001, // 指定服务器端口
open: true, // 在服务器启动时自动在浏览器中打开应用程序
https: false // 是否开启 https
}
})
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。