vite多頁(yè)面配置項(xiàng)目實(shí)戰(zhàn)
最近有多頁(yè)面項(xiàng)目需要重構(gòu),就想試試使用vite,但是網(wǎng)上很多方法不太全面踩了不少的坑,網(wǎng)上的多頁(yè)面配置方案也不少,我只給出了我成功配置并在使用的方案
目錄結(jié)構(gòu)
{
dist: // 存放打包后的文件,
node_modules: ,
src: {
assets: // 一些靜態(tài)文件,
components: // 公用組件,
index: { // 頁(yè)面1
index.html,
main.js,
App.vue,
...
},
page: { // 頁(yè)面2
index.html,
main.js,
App.vue,
...
},
...
index.html // 用于頁(yè)面初始進(jìn)入時(shí)重定向
},
package.json: ,
vite.config.js: // 配置文件
}Tips:在src中放一個(gè)index.html是為了編譯或打包后,輸入localhost:3000/能夠直接跳轉(zhuǎn)到需要展示的頁(yè)面,而不是出現(xiàn)文件目錄或空白頁(yè)面,對(duì)應(yīng)代碼為:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vite多頁(yè)面</title>
</head>
<body>
<script>
window.location.href = 'index/index.html' // 需要重定向的頁(yè)面
</script>
</body>
</html>
多頁(yè)面使用時(shí),vite配置項(xiàng)中注意點(diǎn)
- 修改root參數(shù)為多頁(yè)面的根目錄:./src/,根據(jù)不同目錄結(jié)構(gòu)而修改
- 配置base參數(shù)為/,不然打包后js文件的訪問(wèn)路徑會(huì)出問(wèn)題
- 將build.outDir原輸入路徑dist改為../dist,根據(jù)root參數(shù)配置層級(jí)不同而對(duì)應(yīng)修改
- rollupOptions.input中配置多個(gè)頁(yè)面的輸入,以下為我使用的配置項(xiàng)
{
admin: path.resolve(__dirname, 'src/index.html'), // 用于頁(yè)面重定向
index: path.resolve(__dirname, 'src/index/index.html'), // 頁(yè)面一
page: path.resolve(__dirname, 'src/page/index.html'), // 頁(yè)面二
}
vite.config.js 配置,僅供參考
直接上我的配置,東西有點(diǎn)多,僅供參考
import {
defineConfig
} from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
export default defineConfig({
// 服務(wù)
server: {
// 服務(wù)器主機(jī)名
host: '0.0.0.0',
// 端口號(hào)
port: 3000,
// 設(shè)為 true 時(shí)若端口已被占用則會(huì)直接退出,
// 而不是嘗試下移一格端口
strictPort: false,
// http.createServer() 配置項(xiàng)
// https: '',
proxy: {
'/api': {
target: 'http://...............',
changeOrigin: true,
rewrite: (path) => {
return path.replace(/^\/api/, '')
}
}
},
// 開(kāi)發(fā)服務(wù)器配置 CORS
// boolean | CorsOptions
cors: {},
// 設(shè)置為 true 強(qiáng)制使依賴(lài)構(gòu)建
// force: true,
// 禁用或配置HMR連接
hmr: {},
// 傳遞給 chokidar 的文件系統(tǒng)監(jiān)視器選項(xiàng)
watch: {}
},
// 項(xiàng)目根目錄
// root: process.cwd(),
root: './src/',
// 項(xiàng)目部署的基礎(chǔ)路徑
base: '/',
// 環(huán)境配置
mode: 'development',
// 全局變量替換 Record<string, string>
define: {},
// 插件
plugins: [vue()],
// 靜態(tài)資源服務(wù)文件夾
publicDir: 'public',
resolve: {
alias: {
'@': path.resolve(__dirname, 'src'),
'components': path.resolve(__dirname, 'src/components')
},
dedupe: [],
// 情景導(dǎo)出package.json 配置中的 exports 字段
conditions: [],
// 解析package.json 中的字段
mainFields: ['module', 'jsnext:main', 'jsnext'],
// 導(dǎo)入時(shí)想要省略的擴(kuò)展名列表
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
},
css: {
// 配置css modules 的行為, 選項(xiàng)被傳遞給postcss-modules
modules: {},
// PostCSS 配置(格式同postcss.config.js)
// postcss-load-config 的插件配置
postcss: {},
// 指定傳遞給 CSS 預(yù)處理器的選項(xiàng)
preprocessorOptions: {
}
},
json: {
// 是否支持從 .json 文件中進(jìn)行按名導(dǎo)入
namedExports: true,
// 若設(shè)置為 true, 導(dǎo)入的 JSON 會(huì)被轉(zhuǎn)換為 export default JSON.parse("...") 會(huì)比轉(zhuǎn)譯成對(duì)象字面量性能更好
// 尤其是當(dāng) JSON 文件較大時(shí)
// 開(kāi)啟此項(xiàng), 則會(huì)禁用按名導(dǎo)入
stringify: false
},
// 繼承自 esbuild 轉(zhuǎn)換選項(xiàng), 最常見(jiàn)的用例是自定義 JSX
esbuild: {
jsxFactory: 'h',
jsxFragment: 'Fragment',
jsxInject: `import React from 'react'`
},
// 靜態(tài)資源處理 字符串 || 正則表達(dá)式
assetsInclude: '',
// 調(diào)整控制臺(tái)輸出的級(jí)別 'info' | 'warn' | 'error' | 'silent'
logLevel: 'info',
// 設(shè)為 false 可以避免 Vite 清屏而錯(cuò)過(guò)在終端中打印某些關(guān)鍵信息
clearScreen: true,
build: {
// 瀏覽器兼容性 ‘esnext' | 'modules'
target: 'modules',
//輸出路徑
outDir: '../dist',
// 生成靜態(tài)資源的存放路徑
assetsDir: '../assets',
// 小于此閾值的導(dǎo)入或引用資源將內(nèi)聯(lián)為 base64 編碼, 以避免額外的http請(qǐng)求, 設(shè)置為 0, 可以完全禁用此項(xiàng),
assetsInlineLimit: 4096,
// 啟動(dòng) / 禁用 CSS 代碼拆分
cssCodeSplit: true,
// 構(gòu)建后是否生成 soutrce map 文件
sourcemap: false,
// 自定義底層的 Rollup 打包配置
rollupOptions: {
input: {
admin: path.resolve(__dirname, 'src/index.html'),
page: path.resolve(__dirname, 'src/page/index.html'),
index: path.resolve(__dirname, 'src/index/index.html'),
},
output: {
chunkFileNames: 'static/js/[name]-[hash].js',
entryFileNames: 'static/js/[name]-[hash].js',
assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
}
},
// @rollup/plugin-commonjs 插件的選項(xiàng)
commonjsOptions: {},
// 構(gòu)建的庫(kù)
// lib: { entry: string, name?: string, formats?: ('es' | 'cjs' | 'umd' | 'iife')[], fileName?: string },
// 當(dāng)設(shè)置為 true, 構(gòu)建后將會(huì)生成 manifest.json 文件
manifest: false,
// 設(shè)置為 false 可以禁用最小化混淆
// 或是用來(lái)指定是應(yīng)用哪種混淆器
// boolean | 'terser' | 'esbuild'
minify: 'terser',
// 傳遞給 Terser 的更多 minify 選項(xiàng)
terserOptions: {},
// 設(shè)置為false 來(lái)禁用將構(gòu)建好的文件寫(xiě)入磁盤(pán)
write: true,
// 默認(rèn)情況下 若 outDir 在 root 目錄下, 則 Vite 會(huì)在構(gòu)建時(shí)清空該目錄。
emptyOutDir: true,
// 啟用 / 禁用 brotli 壓縮大小報(bào)告
brotliSize: false,
// chunk 大小警告的限制
chunkSizeWarningLimit: 500
}
})
訪問(wèn)
頁(yè)面一:http://localhost:3000/index/index.html
頁(yè)面二:http://localhost:3000/page/index.html
總結(jié)
到此這篇關(guān)于vite多頁(yè)面配置的文章就介紹到這了,更多相關(guān)vite多頁(yè)面配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Vue實(shí)現(xiàn)鏈接生成二維碼并支持下載
在現(xiàn)代 Web 應(yīng)用中,快速分享鏈接是一項(xiàng)常見(jiàn)需求,二維碼作為一種簡(jiǎn)潔的分享方式,受到了廣泛歡迎,所以本文將介紹如何使用 Vue 純前端技術(shù)實(shí)現(xiàn)動(dòng)態(tài)生成鏈接二維碼的方法,需要的可以參考下2024-03-03
利用Vue v-model實(shí)現(xiàn)一個(gè)自定義的表單組件
本篇文章主要介紹了利用Vue v-model實(shí)現(xiàn)一個(gè)自定義的表單組件的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04
關(guān)于vue中媒體查詢(xún)不起效的原因總結(jié)
這篇文章主要介紹了關(guān)于vue中媒體查詢(xún)不起效的原因總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
解決element-ui table設(shè)置列fixed時(shí)X軸滾動(dòng)條無(wú)法拖動(dòng)問(wèn)題
這篇文章主要介紹了解決element-ui table設(shè)置列fixed時(shí)X軸滾動(dòng)條無(wú)法拖動(dòng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
Vue el-table組件如何實(shí)現(xiàn)將日期格式化
這篇文章主要介紹了Vue el-table組件如何實(shí)現(xiàn)將日期格式化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04

