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

vue-cli中的webpack的config配置全過程

 更新時間:2026年02月09日 10:37:12   作者:神の愛  
文章詳細介紹了Vue CLI中webpack的配置文件,包括`dev.env.js`和`prod.env.js`的內(nèi)容,以及它們是如何通過`webpack-merge`模塊進行合并的,文章還解釋了這些配置文件中各個參數(shù)的作用,如`assetsSubDirectory`、`assetsPublicPath`、`proxyTable`等

vue-cli中的webpack的config配置

打開我們的vue項目文件夾我們可以清楚的看到文件夾下的三個文件,

“dev.env.js”,“index.js”,“prod.env.js”,

我們先打開prod.env.js的文件

看里面的內(nèi)容:

‘use strict'
module.exports = {
NODE_ENV: ‘“production”'
}

prod.env.js的內(nèi)容非常簡單,僅僅是導出了一個對象,

里面寫明了執(zhí)行環(huán)境是“production(生產(chǎn)環(huán)境)”;

接下來看與之對應(yīng)的“dev.env.js”文件

‘use strict'
//引入webpack-merge模塊
const merge = require(‘webpack-merge')
//引入剛才打開的prod.env.js
const prodEnv = require('./prod.env')

module.exports = merge(prodEnv, {
NODE_ENV: ‘“development”'
})

在“dev.env.js”中,先引入了webpack-merge這個模塊。

這個模塊的作用是來合并兩個配置文件對象并生成一個新的配置文件,

有點兒類似于es6的object.assign();

vue-cli中將一些通用的配置抽出來放在一個文件內(nèi),

在對不同的環(huán)境配置不同的代碼,最后使用webpack-merge來進行合并,

減少重復代碼,正如文檔中所說,

“webpack遵循不重復原則(Don’t repeat yourself - DRY),不會再不同的環(huán)境中配置相同的代碼”

當然,關(guān)于webpack-merge的內(nèi)容還遠不止這些,想了解更多關(guān)于這個模塊的朋友請訪問 https://www.npmjs.com/package/webpack-merge

好,讓我們接著回到代碼中來,引入webpack-merge后這個文件又引入了prod.env.js,接著就將prod.env.js的配置和新的配置,即指明開發(fā)環(huán)境(development)進行了merge。(我有點兒不太理解為什么要這樣做,如果不merge直接寫module.exports={NODE_ENV:’"development’}也是可以的,難道是為了優(yōu)雅降級?)

還有一點需要注意是的,development和production一定要加雙引號,不然會報錯?。?!

開頭引入了node中的path模塊,然后我們先來看dev下的配置內(nèi)容:

  • assetsSubDirectory指的是**靜態(tài)資源文件夾,默認“static”**,
  • assetsPublicPath指的是**發(fā)布路徑**,
  • proxyTable是我們常用來**配置代理API的地方**,后面的host和port相信大家都知道,我就不細說了,
  • autoOpenBrowser是否自動打開瀏覽器
  • errorOverlay查詢錯誤
  • notifyOnErrors通知錯誤

poll是跟devserver相關(guān)的一個配置,webpack為我們提供的devserver是可以監(jiān)控文件改動的,但在有些情況下卻不能工作,我們可以設(shè)置一個輪詢(poll)來解決

  • useEslint是否使用eslint
  • showEslintErrorsInOverlay是否展示eslint的錯誤提示
  • devtool webpack提供的用來方便調(diào)試的配置,它有四種模式,可以查看webpack文檔了解更多
  • cacheBusting 一個配合devtool的配置,當給文件名插入新的hash導致清楚緩存時是否生成souce maps,默認在開發(fā)環(huán)境下為true
  • cssSourceMap 是否開啟cssSourceMap

我們再來看build下的配置內(nèi)容:

  • index 編譯后index.html的路徑,path.resolve(__dirname, ‘…/dist’)中
  • path.resolve(__dirname)指的是index.js所在的絕對路徑,再去找“…/dist”這個路徑(node相關(guān)的知識),

assetsRoot打包后的文件根路徑,

至于assetsSubDirectory和assetsPublicPath跟dev中的一樣,

  • productionSourceMap是否開啟source-map,
  • devtool同dev,
  • productionGzip是否壓縮,
  • productionGzipExtensions gzip模式下需要壓縮的文件的擴展名,設(shè)置后會對相應(yīng)擴展名的文件進行壓縮
  • bundleAnalyzerReport 是否開啟打包后的分析報告

這個是配置

//config目錄下index.js配置文件
// see http://vuejs-templates.github.io/webpack for documentation.
// path是node.js的路徑模塊,用來處理路徑統(tǒng)一的問題
var path = require('path')
 
module.exports = {
    // 下面是build也就是生產(chǎn)編譯環(huán)境下的一些配置
    build: {
        // 導入prod.env.js配置文件,只要用來指定當前環(huán)境,詳細見(1)
        env: require('./prod.env'),
        // 下面是相對路徑的拼接,假如當前跟目錄是config,那么下面配置的index屬性的屬性值就是dist/index.html
        index: path.resolve(__dirname, '../dist/index.html'),
        // 下面定義的是靜態(tài)資源的根目錄 也就是dist目錄
        assetsRoot: path.resolve(__dirname, '../dist'),
        // 下面定義的是靜態(tài)資源根目錄的子目錄static,也就是dist目錄下面的static
        assetsSubDirectory: 'static',
        // 下面定義的是靜態(tài)資源的公開路徑,也就是真正的引用路徑
        assetsPublicPath: '/',
        // 下面定義是否生成生產(chǎn)環(huán)境的sourcmap,sourcmap是用來debug編譯后文件的,通過映射到編譯前文件來實現(xiàn)
        productionSourceMap: true,
        // Gzip off by default as many popular static hosts such as
        // Surge or Netlify already gzip all static assets for you.
        // Before setting to `true`, make sure to:
        // npm install --save-dev compression-webpack-plugin
        // 下面是是否在生產(chǎn)環(huán)境中壓縮代碼,如果要壓縮必須安裝compression-webpack-plugin
        productionGzip: false,
        // 下面定義要壓縮哪些類型的文件
        productionGzipExtensions: ['js', 'css'],
        // Run the build command with an extra argument to
        // View the bundle analyzer report after build finishes:
        // `npm run build --report`
        // Set to `true` or `false` to always turn it on or off
        // 下面是用來開啟編譯完成后的報告,可以通過設(shè)置值為true和false來開啟或關(guān)閉
        // 下面的process.env.npm_config_report表示定義的一個npm_config_report環(huán)境變量,可以自行設(shè)置
        bundleAnalyzerReport: process.env.npm_config_report
    },
    dev: {
        // 引入當前目錄下的dev.env.js,用來指明開發(fā)環(huán)境,詳見(2)
        env: require('./dev.env'),
        // 下面是dev-server的端口號,可以自行更改
        port: 8080,
        // 下面表示是否自定代開瀏覽器
        autoOpenBrowser: true,
        assetsSubDirectory: 'static',
        assetsPublicPath: '/',
        // 下面是代理表,作用是用來,建一個虛擬api服務(wù)器用來代理本機的請求,只能用于開發(fā)模式
        // 詳見(3)
        proxyTable: {},
        // CSS Sourcemaps off by default because relative paths are "buggy"
        // with this option, according to the CSS-Loader README
        // (https://github.com/webpack/css-loader#sourcemaps)
        // In our experience, they generally work as expected,
        // just be aware of this issue when enabling this option.
        // 是否生成css,map文件,上面這段英文就是說使用這個cssmap可能存在問題,但是按照經(jīng)驗,問題不大,可以使用
        // 給人覺得沒必要用這個,css出了問題,直接控制臺不就完事了
        cssSourceMap: false
    }
}

(1)下面是prod.env.js的配置內(nèi)容

    module.exports = {
        // 作用很明顯,就是導出一個對象,NODE_ENV是一個環(huán)境變量,指定production環(huán)境
        NODE_ENV: '"production"'
    }

(2)下面是dev.env.js的配置內(nèi)容

    // 首先引入的是webpack的merge插件,該插件是用來合并對象,也就是配置文件用的,相同的選項會被覆蓋
    var merge = require('webpack-merge')
    // 導入prod.env.js配置文件
    var prodEnv = require('./prod.env')
    // 將兩個配置對象合并,最終結(jié)果是 NODE_ENV: '"development"'
    module.exports = merge(prodEnv, {
        NODE_ENV: '"development"'
    })

(3)下面是proxyTable的一般用法

    vue-cli使用這個功能是借助http-proxy-middleware插件,一般解決跨域請求api
    proxyTable: {
        '/list': {
            target: 'http://api.xxxxxxxx.com', -> 目標url地址
            changeOrigin: true, -> 指示是否跨域
            pathRewrite: {
            '^/list': '/list' -> 可以使用 /list 等價于 api.xxxxxxxx.com/list
            }
        }
    }

總結(jié)

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

相關(guān)文章

  • vue.js管理后臺table組件封裝的方法

    vue.js管理后臺table組件封裝的方法

    table作為數(shù)據(jù)展示組件,在日常開發(fā)中經(jīng)常被用到,這篇文章主要給大家介紹了關(guān)于vue.js管理后臺table組件封裝的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • vue3?父控件遠程獲取數(shù)據(jù)在子組件上顯示不出來的解決方案

    vue3?父控件遠程獲取數(shù)據(jù)在子組件上顯示不出來的解決方案

    這篇文章主要介紹了vue3?父控件遠程獲取數(shù)據(jù),在子組件上顯示不出來,本文給大家分享兩種解決方案幫助大家解決這個問題,需要的朋友可以參考下
    2023-08-08
  • vue使用mui遇到的坑及解決

    vue使用mui遇到的坑及解決

    這篇文章主要介紹了vue使用mui遇到的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue2.0 如何在hash模式下實現(xiàn)微信分享

    vue2.0 如何在hash模式下實現(xiàn)微信分享

    這篇文章主要介紹了vue2.0 如何在hash模式下實現(xiàn)微信分享,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • vue使用iview的modal彈窗嵌套modal出現(xiàn)格式錯誤的解決

    vue使用iview的modal彈窗嵌套modal出現(xiàn)格式錯誤的解決

    這篇文章主要介紹了vue使用iview的modal彈窗嵌套modal出現(xiàn)格式錯誤的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue中的ref/reactive區(qū)別及原理解析

    vue中的ref/reactive區(qū)別及原理解析

    Vue中的ref和reactive是兩種不同的數(shù)據(jù)響應(yīng)式管理方式,通過ref創(chuàng)建的響應(yīng)式對象在訪問和修改時會自動觸發(fā)重新渲染,本文給大家介紹vue中的ref/reactive區(qū)別及原理解析,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Vue3導航欄組件封裝實現(xiàn)方法

    Vue3導航欄組件封裝實現(xiàn)方法

    這篇文章主要為大家詳細介紹了Vue3導航欄組件封裝的實現(xiàn)方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 關(guān)于Vue項目使用scss終端發(fā)出警告解決方法

    關(guān)于Vue項目使用scss終端發(fā)出警告解決方法

    這篇文章主要介紹了關(guān)于Vue項目使用scss終端發(fā)出警告的解決方法,出現(xiàn)這個問題的原因是項目中使用了DartSass舊版的JavaScriptAPI,這些API已被棄用,文章將解決的辦法介紹的非常詳細,需要的朋友可以參考下
    2025-04-04
  • vue實現(xiàn)前臺列表數(shù)據(jù)過濾搜索、分頁效果

    vue實現(xiàn)前臺列表數(shù)據(jù)過濾搜索、分頁效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)前臺列表數(shù)據(jù)過濾搜索、分頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • VUE中v-model和v-for指令詳解

    VUE中v-model和v-for指令詳解

    本篇文章主要介紹了VUE中v-model和v-for指令詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

建德市| 余庆县| 绥德县| 英吉沙县| 盐山县| 云梦县| 乐东| 云浮市| 通山县| 阿坝| 林甸县| 水城县| 甘洛县| 屯昌县| 新源县| 方山县| 阿拉善左旗| 金湖县| 万年县| 姚安县| 洛川县| 镇江市| 天台县| 余庆县| 宜昌市| 浏阳市| 博爱县| 宁国市| 阳江市| 宝坻区| 九江市| 名山县| 四平市| 琼结县| 聂拉木县| 阳城县| 达日县| 福海县| 策勒县| 永登县| 巍山|