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