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

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

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

vue-cli中的webpack的config配置

打開我們的vue項(xiàng)目文件夾我們可以清楚的看到文件夾下的三個(gè)文件,

“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)容非常簡單,僅僅是導(dǎo)出了一個(gè)對象,

里面寫明了執(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這個(gè)模塊。

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

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

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

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

減少重復(fù)代碼,正如文檔中所說,

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

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

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

還有一點(diǎn)需要注意是的,development和production一定要加雙引號,不然會(huì)報(bào)錯(cuò)!??!

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

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

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

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

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

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

assetsRoot打包后的文件根路徑,

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

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

這個(gè)是配置

//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: {
        // 導(dǎo)入prod.env.js配置文件,只要用來指定當(dāng)前環(huán)境,詳細(xì)見(1)
        env: require('./prod.env'),
        // 下面是相對路徑的拼接,假如當(dāng)前跟目錄是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編譯后文件的,通過映射到編譯前文件來實(shí)現(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
        // 下面是用來開啟編譯完成后的報(bào)告,可以通過設(shè)置值為true和false來開啟或關(guān)閉
        // 下面的process.env.npm_config_report表示定義的一個(gè)npm_config_report環(huán)境變量,可以自行設(shè)置
        bundleAnalyzerReport: process.env.npm_config_report
    },
    dev: {
        // 引入當(dāng)前目錄下的dev.env.js,用來指明開發(fā)環(huán)境,詳見(2)
        env: require('./dev.env'),
        // 下面是dev-server的端口號,可以自行更改
        port: 8080,
        // 下面表示是否自定代開瀏覽器
        autoOpenBrowser: true,
        assetsSubDirectory: 'static',
        assetsPublicPath: '/',
        // 下面是代理表,作用是用來,建一個(gè)虛擬api服務(wù)器用來代理本機(jī)的請求,只能用于開發(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文件,上面這段英文就是說使用這個(gè)cssmap可能存在問題,但是按照經(jīng)驗(yàn),問題不大,可以使用
        // 給人覺得沒必要用這個(gè),css出了問題,直接控制臺(tái)不就完事了
        cssSourceMap: false
    }
}

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • vue.js管理后臺(tái)table組件封裝的方法

    vue.js管理后臺(tái)table組件封裝的方法

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

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

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

    vue使用mui遇到的坑及解決

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

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

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

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

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

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

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

    Vue3導(dǎo)航欄組件封裝實(shí)現(xiàn)方法

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

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

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

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

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

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

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

最新評論

临清市| 鹤山市| 青神县| 昌江| 庆元县| 元江| 梁平县| 阜康市| 广平县| 峨边| 长阳| 类乌齐县| 蓬安县| 临海市| 栖霞市| 乡宁县| 康保县| 长寿区| 江安县| 武隆县| 陆良县| 赤水市| 新化县| 南丰县| 徐州市| 通道| 钦州市| 石城县| 呼伦贝尔市| 宁明县| 资阳市| 丰城市| 盐城市| 新疆| 苏尼特左旗| 调兵山市| 喀什市| 巩留县| 栖霞市| 汝城县| 仙桃市|