vue.config.js文件重寫打包工具配置信息
重寫 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 打包時間 // npm i hard-source-webpack-plugin -D 構(gòu)建時進(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校驗 productionSourceMap: false, // 生產(chǎn)環(huán)境是否生成 sourceMap 文件 // assetsDir: '', // 靜態(tài)文件要不要放在一個文件夾里,默認(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)建時間 new BundleAnalyzerPlugin() // 構(gòu)建體積 // 一些依賴,咱們也許只是用到了一部分,不必所有解析,好比moment中的語言包,咱們通常只用中文包就夠了,因此能夠這樣配置: // new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /zh-cn/) ) // 打包文件大小配置 config.performance = { maxEntrypointSize: 10000000, // 根據(jù)入口起點的最大體積,控制 webpack 何時生成性能提示。 maxAssetSize: 30000000 // 根據(jù)單個資源體積(單位: bytes),控制 webpack 何時生成性能提示。 } // 生產(chǎn)環(huán)境 優(yōu)化打包chunk-vendors.js文件體積過大。 Object.assign(config.optimization, { runtimeChunk: 'single', splitChunks: { // 默認(rèn)的splitChunks會全部清空 chunks: 'all', minSize: 20 * 1024 // chunks超過20000bit(20kb)將被單獨打包 // cacheGroups: { // 對node_modules下的庫單獨打包。暫時先不開啟,可以看看打包體積后決定 // 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 // 只有壓縮率小于這個值的資源才會被處理 }) ) } }, // css相關(guān)配置 css: { loaderOptions: { // 啟用less中javascript支持 less: { // less-lorder配置項 詳見 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è)置代碼保存時是否自動刷新頁面。默認(rèn):true // open: false, //配置自動啟動瀏覽器,默認(rèn):false // hot: true, // 用于設(shè)置代碼保存時是否進(jìn)行熱更新(局部刷新,不刷新整個頁面)。默認(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
是一個可選的配置文件,可以在其中定義一些自定義的配置選項,以覆蓋 Vite 的默認(rèn)配置。你可以在這個文件中引入 Vite 的相關(guān)模塊,然后使用 Vite 的 API 來修改或擴展默認(rèn)配置。
以下是一個示例 vue.config.js
文件,用于重寫 Vite 的配置信息:
// vue.config.js module.exports = { // 在這里定義你的自定義配置 // 例如,修改默認(rèn)的構(gòu)建輸出目錄 build: { outDir: 'dist' } }
在上面的示例中,我們通過 module.exports
導(dǎo)出一個對象,該對象包含一個 build
屬性,用于修改默認(rèn)的構(gòu)建輸出目錄。在構(gòu)建過程中,Vite 將使用這個新的輸出目錄來生成構(gòu)建結(jié)果。
要使 vue.config.js
文件生效,確保將其放置在項目的根目錄下,并在 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 配置選項 })
在上面的示例中,我們通過將 vueConfig
對象合并到默認(rèn)配置中,將 vue.config.js
中的自定義配置應(yīng)用到整個 Vite 項目中。你還可以根據(jù)需要添加其他的自定義配置選項,例如別名(alias)和構(gòu)建選項(build options)。
到此這篇關(guān)于vue.config.js文件重寫打包工具配置信息的文章就介紹到這了,更多相關(guān)vue.config.js重寫打包配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
小程序跳轉(zhuǎn)到的H5頁面再跳轉(zhuǎn)回跳小程序的方法
這篇文章主要介紹了小程序跳轉(zhuǎn)到的H5頁面再跳轉(zhuǎn)回跳小程序的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03用js限制網(wǎng)頁只在微信瀏覽器中打開(或者只能手機端訪問)
這篇文章主要介紹了用js限制網(wǎng)頁只在微信瀏覽器中打開,很多電影站也是這么限制的,原因你懂的,需要的朋友可以參考下2020-01-01基于BootStrap Metronic開發(fā)框架經(jīng)驗小結(jié)【四】Bootstrap圖標(biāo)的提取和利用
通過本文主要介紹如何提取Bootstrap的圖標(biāo)信息,存儲到數(shù)據(jù)庫里面為我所用,非常具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-05-05jQuery實現(xiàn)鼠標(biāo)放置名字上顯示詳細(xì)內(nèi)容氣泡提示框效果的方法分析
這篇文章主要介紹了jQuery實現(xiàn)鼠標(biāo)放置名字上顯示詳細(xì)內(nèi)容氣泡提示框效果的方法,結(jié)合實例形式分析了jQuery結(jié)合bootstrap插件實現(xiàn)的鼠標(biāo)響應(yīng)式提示框相關(guān)操作技巧,需要的朋友可以參考下2020-04-04模擬彈出窗口效果,關(guān)閉層之前,不能選擇后面的頁內(nèi)容
模擬彈出窗口效果,關(guān)閉層之前,不能選擇后面的頁內(nèi)容...2007-02-02