最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3 build的配置及詳解

 更新時(shí)間:2025年09月13日 09:25:09   作者:leijmdas  
這篇文章主要介紹了vue3 build的配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue3 build的配置

Vue 3 項(xiàng)目的構(gòu)建配置主要集中在 vite.config.js(如果使用 Vite)或 vue.config.js(如果使用 Vue CLI)。

Vite 是目前 Vue 3 官方推薦的構(gòu)建工具。

下面是一個(gè)核心配置項(xiàng)的概覽表格,方便你快速了解:

配置類(lèi)別配置項(xiàng) (Vite)配置項(xiàng) (Vue CLI)主要作用與常見(jiàn)值
基礎(chǔ)路徑basepublicPath部署應(yīng)用時(shí)的基礎(chǔ)公共路徑。例如:'/my-app/' (子路徑部署), './' (相對(duì)路徑)
輸出目錄build.outDiroutputDir打包文件的輸出目錄,默認(rèn)為 'dist'
靜態(tài)資源目錄build.assetsDirassetsDir放置生成的靜態(tài)資源 (js, css, img, fonts) 的目錄,相對(duì)于 outputDir。例如 'assets'
源代碼映射build.sourcemapproductionSourceMap是否為生產(chǎn)環(huán)境構(gòu)建生成 source map 文件,便于調(diào)試。false 可加速構(gòu)建并減小輸出體積
代碼壓縮build.minify(通過(guò) configureWebpack)指定生產(chǎn)環(huán)境代碼壓縮工具。Vite 默認(rèn)使用 'terser',也可設(shè)置為 'esbuild'(更快)
文件哈希build.rollupOptions.outputfilenameHashing在輸出的文件名中添加哈希值以控制緩存。Vite 通常配置在 rollupOptions.output 中 ,Vue CLI 默認(rèn)為 true
路徑別名resolve.aliaschainWebpack 或 configureWebpack創(chuàng)建模塊導(dǎo)入的別名,簡(jiǎn)化路徑。例如 '@': path.resolve(__dirname, 'src')
開(kāi)發(fā)服務(wù)器serverdevServer配置開(kāi)發(fā)服務(wù)器行為,如端口、代理等
CSS 相關(guān)csscss配置 CSS 預(yù)處理器、模塊化、提取行為等
環(huán)境變量.env.[mode] 文件.env.[mode] 文件根據(jù)不同環(huán)境(開(kāi)發(fā)、生產(chǎn)、測(cè)試)設(shè)置變量。Vite 中通過(guò) import.meta.env 訪問(wèn)

Vite 項(xiàng)目詳細(xì)配置 (vite.config.js)

Vite 是 Vue 3 官方推薦的構(gòu)建工具,提供更快的開(kāi)發(fā)服務(wù)器啟動(dòng)和熱更新 。

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
 
export default defineConfig({
  plugins: [vue()], // 使用 Vue 插件
  base: './', // 部署應(yīng)用時(shí)的基本 URL。默認(rèn)是 '/',如果部署到子路徑,需要修改 [3](@ref)
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'), // 設(shè)置路徑別名,簡(jiǎn)化導(dǎo)入 [4,5](@ref)
    },
  },
  server: {
    host: '0.0.0.0', // 指定服務(wù)器應(yīng)該監(jiān)聽(tīng)哪個(gè) IP 地址
    port: 3000, // 指定開(kāi)發(fā)服務(wù)器端口 [4](@ref)
    open: true, // 在服務(wù)器啟動(dòng)時(shí)自動(dòng)打開(kāi)瀏覽器 [4](@ref)
    proxy: { // 配置自定義代理規(guī)則 [4](@ref)
      '/api': {
        target: 'http://your-api-server.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
      },
    },
  },
  build: {
    outDir: 'dist', // 打包輸出目錄 [3](@ref)
    assetsDir: 'assets', // 靜態(tài)資源存放目錄 [3](@ref)
    sourcemap: false, // 是否生成 sourcemap 文件,生產(chǎn)環(huán)境建議關(guān)閉以減小體積 [4](@ref)
    minify: 'terser', // 代碼壓縮工具,可選 'terser' 或 'esbuild',默認(rèn)為 'esbuild' [5](@ref)
    terserOptions: { // 傳遞給 Terser 的更多 minify 選項(xiàng) [6](@ref)
      compress: {
        drop_console: true, // 移除 console
        drop_debugger: true, // 移除 debugger
      },
    },
    rollupOptions: { // 自定義底層的 Rollup 打包配置 [4](@ref)
      output: {
        chunkFileNames: 'js/[name]-[hash].js', // 代碼分割后的 chunk 文件命名
        entryFileNames: 'js/[name]-[hash].js', // 入口文件命名
        assetFileNames: '[ext]/[name]-[hash].[ext]', // 靜態(tài)資源文件命名(如字體、圖片)[5](@ref)
      },
    },
  },
  css: {
    preprocessorOptions: { // CSS 預(yù)處理器相關(guān)配置 [4](@ref)
      scss: {
        additionalData: `@import "@/styles/variables.scss";`, // 全局注入 SCSS 變量或 mixin
      },
    },
  },
})

Vue CLI 項(xiàng)目詳細(xì)配置 (vue.config.js)

Vue CLI 也是一個(gè)常用的工具,可以簡(jiǎn)化 Vue 項(xiàng)目的配置和打包過(guò)程 。

const { defineConfig } = require('@vue/cli-service')
const path = require('path')
 
module.exports = defineConfig({
  transpileDependencies: true, // 如果需要 Babel 顯式轉(zhuǎn)譯某些依賴,可以在此列出
  publicPath: process.env.NODE_ENV === 'production' ? '/my-app/' : '/', // 部署應(yīng)用包時(shí)的基本 URL,類(lèi)似于 Vite 的 base [8](@ref)
  outputDir: 'dist', // 構(gòu)建文件輸出目錄 [9](@ref)
  assetsDir: 'static', // 放置生成的靜態(tài)資源的目錄 [9](@ref)
  indexPath: 'index.html', // 指定生成的 index.html 的輸出路徑 [9](@ref)
  filenameHashing: true, // 靜態(tài)資源文件名是否包含 hash 以控制緩存 [9](@ref)
  productionSourceMap: false, // 生產(chǎn)環(huán)境是否生成 source map,關(guān)閉可加速構(gòu)建 [8](@ref)
  configureWebpack: { // 簡(jiǎn)單調(diào)整 Webpack 配置,會(huì)合并到最終配置 [10](@ref)
    resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src'),
      },
    },
  },
  chainWebpack: (config) => { // 基于 webpack-chain 的鏈?zhǔn)讲僮?,用于更?xì)粒度的控制 [10](@ref)
    if (process.env.NODE_ENV === 'production') {
      config.optimization.minimizer('terser').tap((args) => {
        args[0].terserOptions.compress.drop_console = true
        return args
      })
    }
  },
  devServer: {
    port: 8080, // 開(kāi)發(fā)服務(wù)器端口 [8](@ref)
    open: true, // 啟動(dòng)后是否打開(kāi)瀏覽器 [8](@ref)
    proxy: { // 代理配置,解決開(kāi)發(fā)環(huán)境跨域 [8](@ref)
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true,
        pathRewrite: {
          '^/api': '',
        },
      },
    },
  },
})

環(huán)境變量配置

Vue 3 項(xiàng)目通常使用環(huán)境變量來(lái)管理不同環(huán)境(開(kāi)發(fā)、測(cè)試、生產(chǎn))的配置 。

創(chuàng)建環(huán)境文件:在項(xiàng)目根目錄創(chuàng)建 .env.development (開(kāi)發(fā)環(huán)境)、.env.production (生產(chǎn)環(huán)境)、.env.test (測(cè)試環(huán)境) 等文件 。

定義變量:在環(huán)境文件中,以 VITE_ 開(kāi)頭定義變量(Vite 項(xiàng)目) 或 VUE_APP_ 開(kāi)頭(Vue CLI 項(xiàng)目)。

  • Vite 項(xiàng)目環(huán)境文件示例 (.env.production):
VITE_APP_TITLE=我的應(yīng)用
VITE_API_BASE_URL=https://api.example.com
  • Vue CLI 項(xiàng)目環(huán)境文件示例:
VUE_APP_TITLE=我的應(yīng)用
VUE_APP_API_BASE_URL=https://api.example.com

訪問(wèn)變量

  • Vite 項(xiàng)目中,通過(guò) import.meta.env.VITE_變量名 訪問(wèn) 。
  • Vue CLI 項(xiàng)目中,通過(guò) process.env.VUE_APP_變量名 訪問(wèn)。

常用構(gòu)建命令

package.jsonscripts 中通常會(huì)定義這些命令:

  • 開(kāi)發(fā)環(huán)境npm run dev (Vite) 或 npm run serve (Vue CLI) - 啟動(dòng)開(kāi)發(fā)服務(wù)器 。
  • 生產(chǎn)構(gòu)建npm run build - 構(gòu)建生產(chǎn)環(huán)境用的包,輸出到 dist 目錄 。
  • 預(yù)覽構(gòu)建結(jié)果npm run preview (Vite) - 本地預(yù)覽構(gòu)建后的生產(chǎn)包。

可選:配置分析和優(yōu)化

  • 打包分析:可以使用 rollup-plugin-visualizer 等插件分析構(gòu)建產(chǎn)物,優(yōu)化體積 。
  • 代碼分割:通過(guò)動(dòng)態(tài)導(dǎo)入 (import()) 和配置 build.rollupOptions.output.manualChunks (Vite) 或 configureWebpack.optimization.splitChunks (Vue CLI) 來(lái)優(yōu)化代碼分割和懶加載 。
  • 兼容舊瀏覽器:使用 @vitejs/plugin-legacy (Vite) 或相應(yīng)的 Babel 配置 (Vue CLI) 為生產(chǎn)構(gòu)建提供傳統(tǒng)瀏覽器兼容性 。

總結(jié)

希望這些信息能幫助你配置和優(yōu)化你的 Vue 3 項(xiàng)目構(gòu)建!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue中狀態(tài)管理器Pinia的用法詳解

    vue中狀態(tài)管理器Pinia的用法詳解

    Pinia?是?Vue.js?的輕量級(jí)狀態(tài)管理庫(kù),最近很受歡迎,它使用?Vue?3?中的新反應(yīng)系統(tǒng)來(lái)構(gòu)建一個(gè)直觀且完全類(lèi)型化的狀態(tài)管理庫(kù),下面就跟隨小編一起來(lái)學(xué)習(xí)一下它的具體使用吧
    2023-10-10
  • Vuejs第一篇之入門(mén)教程詳解(單向綁定、雙向綁定、列表渲染、響應(yīng)函數(shù))

    Vuejs第一篇之入門(mén)教程詳解(單向綁定、雙向綁定、列表渲染、響應(yīng)函數(shù))

    組件(Component)是 Vue.js 最強(qiáng)大的功能之一。接下來(lái)給大家介紹vuejs單向綁定、雙向綁定、列表渲染、響應(yīng)函數(shù)的相關(guān)知識(shí),非常不錯(cuò),感興趣的朋友一起看看吧
    2016-09-09
  • 基于Vue實(shí)現(xiàn)封裝一個(gè)虛擬列表組件

    基于Vue實(shí)現(xiàn)封裝一個(gè)虛擬列表組件

    正常情況下,我們對(duì)于數(shù)據(jù)都會(huì)分頁(yè)加載,最近項(xiàng)目中確實(shí)遇到了不能分頁(yè)的場(chǎng)景,如果不分頁(yè),頁(yè)面渲染幾千條數(shù)據(jù)就會(huì)感知到卡頓,使用虛擬列表就勢(shì)在必行了。本文主要介紹了如何基于Vue實(shí)現(xiàn)封裝一個(gè)虛擬列表組件,感興趣的可以了解一下
    2023-03-03
  • Vue列表渲染的示例代碼

    Vue列表渲染的示例代碼

    這篇文章主要介紹了Vue列表渲染的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Vue.js如何使用Socket.IO的示例代碼

    Vue.js如何使用Socket.IO的示例代碼

    這篇文章主要介紹了Vue.js如何使用Socket.IO的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue如何監(jiān)聽(tīng)元素橫向滾動(dòng)到最右側(cè)

    vue如何監(jiān)聽(tīng)元素橫向滾動(dòng)到最右側(cè)

    這篇文章主要介紹了vue如何監(jiān)聽(tīng)元素橫向滾動(dòng)到最右側(cè)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 詳解利用jsx寫(xiě)vue組件的方法示例

    詳解利用jsx寫(xiě)vue組件的方法示例

    這篇文章主要給大家介紹了關(guān)于利用jsx寫(xiě)vue組件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起看看吧。
    2017-07-07
  • Vuex的四個(gè)常用核心概念解讀

    Vuex的四個(gè)常用核心概念解讀

    本文詳細(xì)解析了Vuex中的四個(gè)核心概念及其區(qū)別,包括State用于存儲(chǔ)狀態(tài),Getters用于計(jì)算屬性并緩存,Mutations是唯一更改State的同步方法,Actions則用于提交Mutations且支持異步操作
    2024-11-11
  • Vue實(shí)現(xiàn)導(dǎo)航欄的顯示開(kāi)關(guān)控制

    Vue實(shí)現(xiàn)導(dǎo)航欄的顯示開(kāi)關(guān)控制

    今天小編就為大家分享一篇Vue實(shí)現(xiàn)導(dǎo)航欄的顯示開(kāi)關(guān)控制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Vue實(shí)現(xiàn)當(dāng)前頁(yè)面刷新的4種方法舉例

    Vue實(shí)現(xiàn)當(dāng)前頁(yè)面刷新的4種方法舉例

    我們?cè)陂_(kāi)發(fā)vue的頁(yè)面的時(shí)候,有時(shí)候會(huì)遇到需要刷新當(dāng)前頁(yè)面功能,但是vue框架自帶的router是不支持刷新當(dāng)前頁(yè)面功能,下面這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)當(dāng)前頁(yè)面刷新的4種方法,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

盐津县| 洞口县| 富顺县| 乐山市| 宁都县| 三亚市| 柘荣县| 安康市| 朝阳区| 宁晋县| 新津县| 屏东市| 同仁县| 中江县| 崇信县| 友谊县| 万山特区| 安吉县| 宁武县| 桑植县| 错那县| 禄劝| 磐安县| 宿州市| 泗阳县| 启东市| 桂平市| 安宁市| 云南省| 夏津县| 镇江市| 文水县| 同心县| 苗栗县| 时尚| 黄陵县| 陆河县| 广饶县| 曲阜市| 福鼎市| 岳普湖县|