vite.config.js配置入門詳解
目錄
- 1 如何建立vite專案?
- 2 如何讓vite專案啟動時自動開啟瀏覽器?
- 3vite啟動預設埠為3000?如何更改預設埠?
- 4 vite如何設定熱更新?
- 5vite中如何配置別名路徑?
- 6 vite中如何設定便捷圖片路徑引用?
- 7如何把vite打包以後的,和img資源分別分門別類在js/css/img資料夾中?
- 8 如何通過vite給專案配置多個環境?
- 9 vite中如何配置多入口,進行多頁面開發?
- 10 如何設定開啟生產打包分析檔案大小功能?類似webpack-bundle-analyzer?
- 11 如何解決require is not define報錯的的問題? 場景: 比如我們assets資料夾下有一個靜態的json:
1 如何建立vite專案?
step 1 : npm init vite@latest yarn create vite step2 : npm init vite@latest my--app --template vue npm 7+,需要額外的雙橫線: npm init vite@latest my-vue-app -- --template vue # yarn yarn create vite my-vue-app --template vue
2 如何讓vite專案啟動時自動開啟瀏覽器?
注:vite針對開發環境,打包環境和預覽環境分別定義了三個選項: server、build、preview。 開發環境server類似於webpack中的devServer。
export default ({mode})=>{ return defineConfig({ server:{ open:true,//vite專案啟動時自動開啟瀏覽器 },} }
3vite啟動預設埠為3000?如何更改預設埠?
export default ({mode})=>{ return defineConfig({ server:{ port:8080,//vite專案啟動時自定義埠 },} }
4 vite如何設定熱更新?
vite預設開發環境關閉了熱更新。程式碼更改需要手動更新,設定更改程式碼自動重新整理頁面需要設定hmr:true
export default ({mode})=>{ return defineConfig({ server:{ hmr:true,//開啟熱更新 },} }
5vite中如何配置別名路徑?
設定resolver選項
import { resolve } from 'path'; export default ({mode})=>{ return defineConfig({ resolve:{ alias:{ "@":resolve(__dirname,"src"),"@c":resolve(__dirname,"src/components"),} },} }
6 vite中如何設定便捷圖片路徑引用?
比如圖片資源都在src/assets/image目錄下,不想在專案中每次都通過require("../assets/image/1.jpg")這樣寫一長串去引用。能否通過 類似nuxt中的快速引用?
<img src="/images/1.png" alt="vite.config.js配置入門詳解" /> 這裡直接引用
export default ({mode})=>{ return defineConfig({ resolve:{ alias:{ "/images":"src/assets/images/" //這裡不能通過path模組解析路徑的寫法 } },} }
7如何把vite打包以後的js,css和img資源分別分門別類在js/css/img資料夾中?
//由於是處理打包以後的資源,所以需要配置build選項 export default ({mode})=>{ return defineConfig({ build:{ assetsDir:"static",rollupOptnJDZakzQions:{ input:{ index:resolve(__dirname,"index.html"),project:resolve(__dirname,"project.html") },output:{ chunkFileNames:'static/js/[name]-[hash].js',entryFileNames:"static/js/[name]-[hash].js",assetFileNames:"static/[ext]/name-[hash].[ext]" } },},} }
8 如何通過vite給專案配置多個環境?
以開發、測試和生產環境為例
(1)在專案根目錄下分別新建.env.development,.env.test,.env.production檔案
//.env.devopment檔案內容 NODE_ENV="development" VITE_APP_BASEAPI="https://www.dev.com" //.env.test檔案內容 NODE_ENV="test" VITE_APP_BASEAPI="https://www.test.com" //.env.production檔案內容 NODE_ENV="production" VITE_APP_BASEAPI="https://www.production.com"
(2) package.json檔案做如下修改
"scripts": { "dev": "vite --mode development","build": "vite build --mode production","test": "vite build --mode test","preview": "vite preview" },
(3)專案中通過Import.meta.env.VITE_APP_BASEAPI來獲取對應環境的值
<template> <div> <Item></Item> </div> </template> <script setup> import { defineComponent,onMounted,ref } from 'vue' import Item from "@c/item.vue" console.log("env",import.meta.env.VITE_APP_BASEAPI) console.log("可選鏈",obj?.gender || "male") }) </script>
9 vite中如何配置多入口,進行多頁面開發?
step1:在根目錄新建一個入口頁面以project.html為例,同時在根目錄下新建一個project資料夾,在此資料夾新建一個main.js,App.vue
step2:vite.config.js作如下修改:
import { defineConfig,loadEnv } from 'vite' import {resolve} from "path"; export default ({mode})=>{ return defineConfig({ build:{ rollupOptions:{ input:{ index:resolve(__dirname,//output:{ // chunkFileNames:'static/js/[name]-[hash].js',//entryFileNames:"static/js/[name]-[hash].js",//assetFileNames:"static/[ext]/name-[hash].[ext]" } },plugins: [ vue(),] }) }
step3:vite run dev 啟動以後在url加上project.html檢視project專案 localhost:3000/project.html
10 如何設定開啟生產打包分析檔案大小功能?類似webpack-bundle-analyzer?
//1 安裝rollup-plugin-visualizer 外掛 npm i rollup-plugin-visualizer //2 vite.config.js中引入外掛 import {visualizer} from "rollup-plugin-visualizer" export default ({mode:string})=>{ const plugins=[ vue(),AutoImport({ resolvers: [ElementPlusResolver()],}),Components({ resolvers: [ElementPlusResolver()] }),visualizer({ open:true,//注意這裡要設定為true,否則無效 gzipSize:true,brotliSize:true }) ]; } return defineConfig({ resolve:{ alias:{ "@":resolve(__dirname,"/images":"src/assets/images/" } },plugins })
11 如何解決require is not define報錯的的問題? 場景: 比如我們assets資料夾下有一個靜態的json:
list:[ { shop_id:1,shop_name:'搜獵人藝術生活',products:[ { pro_id:101,text:'洗面奶洗面奶洗面奶洗面奶洗面奶洗面奶洗面奶洗面奶',price:480,num:1,img:require("./images/1.png"),sum:480,checked:false//商品選中狀態 },{ pro_id:102,text:'花露水花露水花露水花露水花露水花露水花露水花露水',price:680,img:require('./images/2.png'),sum:680,checked:false },{ pro_id:103,text:'燕麥片燕麥片燕麥片燕麥片燕麥片燕麥片燕麥片燕麥片',price:380,img:require('./images/3.png'),sum:380,checked:false } ],check:false,//店鋪選中狀態 choose:0,//商品選中個數 },{ shop_id:2,shop_name:'卷卷旗艦店',products:[ { pro_id:201,text:'剃鬚刀剃鬚刀剃鬚刀剃鬚刀剃鬚刀剃鬚刀剃鬚刀剃鬚刀',price:580,img:require('./images/4.png'),sum:580,{ pro_id:202,text:'衛生紙衛生紙衛生紙衛生紙衛生紙衛生紙衛生紙衛生紙',price:780,img:require('./images/5.png'),sum:780,choose:0,],status:false,//全選選中狀態 allchoose:0,//店鋪選中個數 allsum:0,//總計價格 allnum:0,//總計數量 } export default fetchData
此時執行你回發現報錯:require is not define? 解決辦法:
const fetchData={
list:[
{
shop_id:1,img:new URL("./images/1.png",import.meta.url).href,www.cppcns.com text:'花露水花露水花露水花露水花露水花露水花露水花露水',img:new URL('./images/2.png',img:new URL('./images/3.png',www.cppcns.com price:580,img:new URL('./images/4.png',img:new URL('./images/5.png',//總計數量
}
export default fetchData
注意引用方式的變化:require------->new URL('./images/5.png',import.meta.url).href
到此這篇關於vite.config.js配置入門詳解的文章就介紹到這了,更多相關vite.config.js配置內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!