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

vue.config.js文件重寫打包工具配置信息

 更新時(shí)間:2023年12月06日 11:49:34   作者:jsPao  
vue.config.js是一個(gè)可選的配置文件,可以在其中定義一些自定義的配置選項(xiàng),本文就來介紹一下如何配置,具有一定的參考價(jià)值,感興趣的可以了解一下

重寫 Webpack 的配置信息

// cnpm install compression-webpack-plugin@6.1.1 -D       gzip壓縮插件,需要引入
// cnpm i image-webpack-loader@8.1.0 --save-dev           圖片壓縮,不需要引入
// npm i webpack-bundle-analyzer@4.7.0 --save-dev         打包分析插件
// npm i speed-measure-webpack-plugin -D                  打包時(shí)間
// npm i hard-source-webpack-plugin -D                    構(gòu)建時(shí)進(jìn)行緩存

const CompressionWebpackPlugin = require('compression-webpack-plugin') // 開啟gzip壓縮, 按需引用
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin // 引入打包分析插件
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin')
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin')
const webpack = require('webpack')

const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i // 開啟gzip壓縮, 按需寫入
const isProduction = process.env.NODE_ENV === 'production'
const BASE_URL = process.env.NODE_ENV === 'production' ? './' : './'
const path = require('path')

function resolve (dir) {
  return path.join(__dirname, dir)
}

module.exports = {
  // 其他配置可以走默認(rèn)
  publicPath: BASE_URL, // 基本路徑
  outputDir: 'dist', // 輸出文件目錄
  lintOnSave: process.env.NODE_ENV !== 'production', // 生產(chǎn)環(huán)境不進(jìn)行eslint校驗(yàn)
  productionSourceMap: false, // 生產(chǎn)環(huán)境是否生成 sourceMap 文件
  // assetsDir: '',  // 靜態(tài)文件要不要放在一個(gè)文件夾里,默認(rèn)值是‘',有需要可以自己改

  // webpack配置
  chainWebpack: config => {
    // 移除 preload(預(yù)載) 插件
    config.plugins.delete('preload')
    // 移除 prefetch(預(yù)取) 插件
    config.plugins.delete('prefetch')
    if (isProduction) {
      // 生產(chǎn)環(huán)境下---壓縮圖片
      config.module
        .rule('images')
        .use('image-webpack-loader')
        .loader('image-webpack-loader')
        .options({ bypassOnDebug: true })
        .end()
    }
  },
  configureWebpack: (config) => {
    // 生產(chǎn)和開發(fā)環(huán)境都有的配置
    config.devtool = 'source-map'
    // 開啟緩存
    config.plugins.push(
      new HardSourceWebpackPlugin()
    )
    // 配置別名
    Object.assign(config.resolve, {
      alias: {
        '@': path.resolve(__dirname, './src')
      }
    })
    // 生產(chǎn)環(huán)境下的配置
    if (isProduction) {
      // 添加webpack插件
      config.plugins.push(
        new SpeedMeasurePlugin(), // 構(gòu)建時(shí)間
        new BundleAnalyzerPlugin() // 構(gòu)建體積
        // 一些依賴,咱們也許只是用到了一部分,不必所有解析,好比moment中的語言包,咱們通常只用中文包就夠了,因此能夠這樣配置:
        // new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /zh-cn/)
      )
      // 打包文件大小配置
      config.performance = {
        maxEntrypointSize: 10000000, // 根據(jù)入口起點(diǎn)的最大體積,控制 webpack 何時(shí)生成性能提示。
        maxAssetSize: 30000000 // 根據(jù)單個(gè)資源體積(單位: bytes),控制 webpack 何時(shí)生成性能提示。
      }
      // 生產(chǎn)環(huán)境 優(yōu)化打包c(diǎn)hunk-vendors.js文件體積過大。
      Object.assign(config.optimization, {
        runtimeChunk: 'single',
        splitChunks: { // 默認(rèn)的splitChunks會全部清空
          chunks: 'all',
          minSize: 20 * 1024 // chunks超過20000bit(20kb)將被單獨(dú)打包
          // cacheGroups: { // 對node_modules下的庫單獨(dú)打包。暫時(shí)先不開啟,可以看看打包體積后決定
          //   vendor: { // 默認(rèn)的vendor.js
          //     test: /[\\/]node_modules[\\/]/, // 匹配映射文件
          //     name (module) {
          //       // get the name. E.g. node_modules/packageName/not/this/part.js
          //       // or node_modules/packageName
          //       const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]
          //       // npm package names are URL-safe, but some servers don't like @ symbols
          //       return `npm.${packageName.replace('@', '')}`
          //     }
          //   }
          // }
        }
      })
      // 清除console.log
      config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true

      // 開啟 gzip 壓縮 文件
      // 注:生成的壓縮文件以.gz為后綴,一般瀏覽器都已支持.gz的資源文件,在http請求的Request Headers 中能看到 Accept-Encoding:gzip。要使服務(wù)器返回.gz文件,還需要對服務(wù)器進(jìn)行配置,根據(jù)Request Headers的Accept-Encoding標(biāo)簽進(jìn)行鑒別,如果支持gzip就返回.gz文件。
      // 服務(wù)器配置參考:https://blog.csdn.net/a1983029606/article/details/115690820
      config.plugins.push(
        new CompressionWebpackPlugin({
          filename: '[path][base].gz',
          algorithm: 'gzip',
          test: productionGzipExtensions,
          threshold: 10240, // 只有大小大于該值的資源會被處理
          minRatio: 0.8 // 只有壓縮率小于這個(gè)值的資源才會被處理
        })
      )
    }
  },

  // css相關(guān)配置
  css: {
    loaderOptions: {
      // 啟用less中javascript支持
      less: {
        // less-lorder配置項(xiàng) 詳見 https://www.webpackjs.com/loaders/less-loader/#lessoptions
        javascriptEnabled: true
      }
    }
  },

  // webpack-dev-server 相關(guān)配置
  devServer: {
    host: '0.0.0.0', // ip 本地
    port: 2023, // 設(shè)置端口號
    // inline: true, // 用于設(shè)置代碼保存時(shí)是否自動刷新頁面。默認(rèn):true
    // open: false, //配置自動啟動瀏覽器,默認(rèn):false
    // hot: true, // 用于設(shè)置代碼保存時(shí)是否進(jìn)行熱更新(局部刷新,不刷新整個(gè)頁面)。默認(rèn):true
    // https: false, // 用于設(shè)置是否啟用https,默認(rèn):false
    proxy: {
      // 設(shè)置代理
      '/api': {
        // 代理名稱   凡是使用/api開頭的地址都是用此代理
        target: 'http://1.2.3.4:5000/', // 需要代理訪問的api地址
        changeOrigin: true // 允許跨域請求
        // pathRewrite: {
        //   // 重寫路徑,替換請求地址中的指定路徑
        //   '^/api': '/' // 將請求地址中的/api替換為空,也就是請求地址中不會包含/api/
        // }
      }
    }
  },
  // 第三方插件配置
  pluginOptions: {}
}

重寫 Vite 的配置信息

vue.config.js 是一個(gè)可選的配置文件,可以在其中定義一些自定義的配置選項(xiàng),以覆蓋 Vite 的默認(rèn)配置。你可以在這個(gè)文件中引入 Vite 的相關(guān)模塊,然后使用 Vite 的 API 來修改或擴(kuò)展默認(rèn)配置。

以下是一個(gè)示例 vue.config.js 文件,用于重寫 Vite 的配置信息:

// vue.config.js  
  
module.exports = {  
  // 在這里定義你的自定義配置  
  // 例如,修改默認(rèn)的構(gòu)建輸出目錄  
  build: {  
    outDir: 'dist'  
  }  
}

在上面的示例中,我們通過 module.exports 導(dǎo)出一個(gè)對象,該對象包含一個(gè) build 屬性,用于修改默認(rèn)的構(gòu)建輸出目錄。在構(gòu)建過程中,Vite 將使用這個(gè)新的輸出目錄來生成構(gòu)建結(jié)果。

要使 vue.config.js 文件生效,確保將其放置在項(xiàng)目的根目錄下,并在 Vite 的配置中引用它。例如,如果你使用的是 Vite 的 vite.config.js 配置文件,可以在其中添加以下代碼來引用 vue.config.js

// vite.config.js  
  
import { defineConfig } from 'vite'  
import vue from '@vitejs/plugin-vue'  
import path from 'path'  
  
// 引用 vue.config.js 文件  
import { vueConfig } from './vue.config.js'  
  
export default defineConfig({  
  plugins: [vue()],  
  // 將 vueConfig 合并到默認(rèn)配置中  
  ...vueConfig,  
  resolve: {  
    alias: {  
      // 在這里添加自定義的別名配置  
    }  
  },  
  build: {  
    // 在這里添加自定義的構(gòu)建配置  
  },  
  // 在這里添加其他 Vite 配置選項(xiàng)  
})

在上面的示例中,我們通過將 vueConfig 對象合并到默認(rèn)配置中,將 vue.config.js 中的自定義配置應(yīng)用到整個(gè) Vite 項(xiàng)目中。你還可以根據(jù)需要添加其他的自定義配置選項(xiàng),例如別名(alias)和構(gòu)建選項(xiàng)(build options)。

到此這篇關(guān)于vue.config.js文件重寫打包工具配置信息的文章就介紹到這了,更多相關(guān)vue.config.js重寫打包配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript對象數(shù)組排序?qū)嵗椒\析

    JavaScript對象數(shù)組排序?qū)嵗椒\析

    這篇文章主要介紹了JavaScript對象數(shù)組排序?qū)嵗椒\析的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-06-06
  • 原生js實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制內(nèi)容到剪切板

    原生js實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制內(nèi)容到剪切板

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制內(nèi)容到剪切板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 深入理解js generator數(shù)據(jù)類型

    深入理解js generator數(shù)據(jù)類型

    下面小編就為大家?guī)硪黄钊肜斫鈐s generator數(shù)據(jù)類型。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • 原生JavaScrip實(shí)現(xiàn)語音識別的示例詳解

    原生JavaScrip實(shí)現(xiàn)語音識別的示例詳解

    語音識別轉(zhuǎn)文本看似是很有難度的一個(gè)功能,但你知道嗎,使用原生?JavaScript?也能實(shí)現(xiàn)語音識別功能,下面小編就來和大家講講具體的實(shí)現(xiàn)方法吧
    2025-03-03
  • javascript檢查某個(gè)元素在數(shù)組中的索引值

    javascript檢查某個(gè)元素在數(shù)組中的索引值

    在js中提供數(shù)據(jù)查找了函數(shù)有很多,但我查找了很久都沒有能實(shí)現(xiàn)我要的方法,后來發(fā)現(xiàn)可以使用indexOf函數(shù)來實(shí)現(xiàn)查找與定位數(shù)組元素索引值的具體方法,各位朋友可參考
    2016-03-03
  • uniapp在微信小程序中使用ECharts的方法

    uniapp在微信小程序中使用ECharts的方法

    本文主要介紹了uniapp集成Echarts,實(shí)現(xiàn)地圖圖表的展示,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • 詳解基于Vue cli生成的Vue項(xiàng)目的webpack4升級

    詳解基于Vue cli生成的Vue項(xiàng)目的webpack4升級

    這篇文章主要介紹了詳解基于Vue cli生成的Vue項(xiàng)目的webpack4升級,本文將詳細(xì)介紹從webpack3到webpack4的升級過程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • uniapp中的picker選擇器的幾種使用場景

    uniapp中的picker選擇器的幾種使用場景

    本文主要介紹了uniapp中的picker選擇器的幾種使用場景,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • js實(shí)現(xiàn)點(diǎn)擊煙花特效

    js實(shí)現(xiàn)點(diǎn)擊煙花特效

    這篇文章主要介紹了js實(shí)現(xiàn)點(diǎn)擊煙花特效,幫助大家更好的利用js美化網(wǎng)頁,感興趣的朋友可以了解下
    2020-10-10
  • JavaScript 處理樹數(shù)據(jù)結(jié)構(gòu)的方法示例

    JavaScript 處理樹數(shù)據(jù)結(jié)構(gòu)的方法示例

    這篇文章主要介紹了JavaScript 處理樹數(shù)據(jù)結(jié)構(gòu)的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06

最新評論

策勒县| 类乌齐县| 桃江县| 兰溪市| 和林格尔县| 呼和浩特市| 朔州市| 白山市| 蛟河市| 贵溪市| 桐乡市| 涡阳县| 沁水县| 沙坪坝区| 临桂县| 自贡市| 铁力市| 贵州省| 襄樊市| 溧阳市| 宁夏| 乌审旗| 灵台县| 唐河县| 大丰市| 张掖市| 桂东县| 岳普湖县| 巴马| 南丰县| 拉孜县| 永顺县| 泰来县| 正安县| 墨江| 阿拉善盟| 宁乡县| 固原市| 班玛县| 新建县| 荣成市|