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

configureWebpack、chainWebpack配置vue.config.js方式

 更新時間:2024年01月24日 15:46:02   作者:土豆Coder  
這篇文章主要介紹了configureWebpack、chainWebpack配置vue.config.js方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

引入問題

我們使用vue create waf-console-vue創(chuàng)建一個Vue項目時,新生成的項目我們可以看到在public/index.html中有這樣的內(nèi)容:

<title><%= htmlWebpackPlugin.options.title %></title>

Vue CLI 關(guān)于HTML和靜態(tài)資源中有說明:

public/index.html文件是一個會被處理的模板html-webpack-plugin處理的模板。在構(gòu)建過程中,資源鏈接會被自動注入。

所以我們會想到,這里使用變量的形式訪問到的

htmlWebpackPlugin.options.title

也就是我們在創(chuàng)建項目的時候命名的項目名稱,然后被腳手架Vue CLI構(gòu)建項目時自動被處理模板寫入了webpack配置中,那我們要如何修改這個配置項呢?

這就引出了問題:

我們?nèi)绾卧?code>@vue-cli4的vue.config.js文件中修改webpack中的這個配置項?

也就是如何修改這個值

htmlWebpackPlugin.options.title

修改htmlWebpackPlugin.options.title

因為新的腳手架vue不希望我們直接操作webpack配置文件,所以不再提供webpack.dev.js這樣的文件了,如果我們想要修改webpack配置需要手動創(chuàng)建文件vue.config.js,那我們?nèi)绾慰茨J(rèn)項目已經(jīng)配置好的webpack配置內(nèi)容呢?

vue inspect > output.js

運(yùn)行后項目中會自動生成一個文件output.js,這個就是當(dāng)前項目的webpack配置內(nèi)容

紅框中我們看到title就是我們的項目名稱,現(xiàn)在我們要修改這個值

// vue.config.js
module.exports = {
  chainWebpack: config => {
    config
      .plugin('html')
      .tap(args => {
        args[0].title = 'title test'
        return args
      })
  }
}

此時,重新啟動項目npm run serve可以看到項目在瀏覽器中的title變成了我們設(shè)置的值title test,我們重新導(dǎo)出webpack的配置看看內(nèi)容是不是改變了

vue inspect > output.js

到此為止我們就通過修改webpack配置改變了項目title值。

chainWebpack

從上面的應(yīng)用實例中通過chainWebpack鏈?zhǔn)讲僮餍薷牧藈ebpack的配置,下面是幾個利用鏈?zhǔn)讲僮餍薷牡睦?/p>

修改Loader選項

這是修改之前的配置

// vue.config.js
module.exports = {
  chainWebpack: config => {
    config
      .plugin('html')
      .tap(args => {
        args[0].title = 'title test'
        return args
      })
    config.module
      .rule('vue')
      .use('vue-loader')
        .loader('vue-loader')
        .tap(options => {
          options.compilerOptions.whitespace = '' // 修改的地方
          return options
        })
  }
}

修改后我們inspect結(jié)果

總結(jié):如果你想修改某個配置項的值我們都可以先使用inspect出webpack的配置內(nèi)容,對應(yīng)的每一項都有注釋告訴我們應(yīng)該如何書寫

例如上面使用紅框框出的

config.plugin('html')

以及

config.module.rule('vue').use('vue-loader')

添加Loader選項

module.exports = {
  chainWebpack: config => {
    config
      .plugin('html')
      .tap(args => {
        args[0].title = 'title test'
        return args
      })
    config.module
      .rule('vue')
      .use('vue-loader')
        .loader('vue-loader')
        .tap(options => {
          options.compilerOptions.whitespace = ''
          return options
        })
    // GraphQL Loader
    config.module
      .rule('graphql')
      .test(/\.graphql$/)
      .use('graphql-tag/loader')
        .loader('graphql-tag/loader')
        .end()
      // 你還可以再添加一個 loader
      .use('other-loader')
        .loader('other-loader')
        .end()
  }
}

替換規(guī)則的Loader

如果你要替換某個規(guī)則的Loader,如果直接調(diào)用鏈?zhǔn)讲僮?,只是在該?guī)則下增加了一條Loader

所以正確的做法是先把這個規(guī)則已有的Loader都給刪除,然后再加上自己的Loader,這里以svg為例,修改之前的內(nèi)容是

module.exports = {
  chainWebpack: config => {
    const svgRule = config.module.rule('svg')
    svgRule.uses.clear() // 清除已有的所有l(wèi)oader
    svgRule
      .use('vue-svg-loader')
        .loader('vue-svg-loader')
    config
      .plugin('html')
      .tap(args => {
        args[0].title = 'title test'
        return args
      })
    config.module
      .rule('vue')
      .use('vue-loader')
        .loader('vue-loader')
        .tap(options => {
          options.compilerOptions.whitespace = ''
          return options
        })
    // GraphQL Loader
    config.module
      .rule('graphql')
      .test(/\.graphql$/)
      .use('graphql-tag/loader')
        .loader('graphql-tag/loader')
        .end()
      // 你還可以再添加一個 loader
      .use('other-loader')
        .loader('other-loader')
        .end()
  }
}

此時我們inspect結(jié)果

添加plugin

const NodePolyfillPlugin = require('node-polyfill-webpack-plugin')

module.exports = {
  chainWebpack: config => {
    config
    	.plugin('node-polyfill-webpack-plugin')
    	.use(NodePolyfillPlugin)
  }
}

此時我們inspect結(jié)果

configureWebpack

// vue.config.js
module.exports = {
  configureWebpack: config => {
    console.log(config)
  },
  chainWebpack: config => {
    console.log(config)
  }
}

通過打印出來的值可以看到結(jié)果一樣,都是webpack的配置內(nèi)容。

configureWebpack對象返回的值會被webpack-merge合并到最終的webpack配置中,如果你需要基于環(huán)境有條件的配置行為,或者想要直接修改配置,可以使用這個。

該方法的第一個參數(shù)就是已經(jīng)解析好的配置,你可以直接修改配置,或者返回一個將會被合并的對象。

像這樣:

// vue.config.js
module.exports = {
  configureWebpack: config => {
	  if (process.env.NODE_ENV === 'production') {
	    // 為生產(chǎn)環(huán)境修改配置
	  } else {
	    // 為開發(fā)環(huán)境修改配置
	  }
	}
}

總結(jié)

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

相關(guān)文章

  • Vuejs使用addEventListener的事件如何觸發(fā)執(zhí)行函數(shù)的this

    Vuejs使用addEventListener的事件如何觸發(fā)執(zhí)行函數(shù)的this

    這篇文章主要介紹了Vuejs使用addEventListener的事件觸發(fā)執(zhí)行函數(shù)的this方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue3實現(xiàn)PDF文件解析與預(yù)覽的完整實踐

    Vue3實現(xiàn)PDF文件解析與預(yù)覽的完整實踐

    在實際的前端開發(fā)中,經(jīng)常會碰到需要在線預(yù)覽PDF文件的場景,比如后臺管理系統(tǒng)查看合同、教育平臺展示試卷、審批系統(tǒng)預(yù)覽發(fā)票等等,所以本文給大家介紹了Vue3實現(xiàn)PDF文件解析與預(yù)覽的完整實踐,需要的朋友可以參考下
    2025-06-06
  • ElementUI年份范圍選擇器功能實現(xiàn)

    ElementUI年份范圍選擇器功能實現(xiàn)

    elementUI中有日期范圍組件,月份范圍選擇的,就是沒有年份范圍選擇的,需要加一個類似風(fēng)格的,下面這篇文章主要給大家介紹了關(guān)于ElementUI年份范圍選擇器功能實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Vue?3?表格時間監(jiān)控與動態(tài)后端請求觸發(fā)詳解?附Demo展示

    Vue?3?表格時間監(jiān)控與動態(tài)后端請求觸發(fā)詳解?附Demo展示

    在Vue3中,使用el-table組件渲染表格數(shù)據(jù),通過el-table-column指定內(nèi)容,時間點需前端校準(zhǔn),用getTime()比較,到達(dá)時觸發(fā)操作,異步API請求可用async/await處理,setInterval實現(xiàn)定時監(jiān)控,配合條件判斷防止重復(fù)請求
    2024-09-09
  • vuex的使用及持久化state的方式詳解

    vuex的使用及持久化state的方式詳解

    這篇文章主要介紹了vuex的使用及持久化state的方式詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue3使用Vue Router實現(xiàn)前端路由控制

    Vue3使用Vue Router實現(xiàn)前端路由控制

    在現(xiàn)代Web應(yīng)用中,前端路由控制是非常重要的一部分,它可以幫助我們將不同的頁面內(nèi)容展示給用戶,同時保持用戶在瀏覽不同頁面時的連貫性,本文將介紹如何使用Vue Router來實現(xiàn)前端路由控制,需要的朋友可以參考下
    2024-10-10
  • 探討Vue.js的組件和模板

    探討Vue.js的組件和模板

    指令是Vue.js中一個重要的特性, 主要提供了一種機(jī)制將數(shù)據(jù)的變化映射為DOM行為。下面通過本文給大家分享Vue.js的組件和模板,需要的朋友參考下吧
    2017-10-10
  • Vue3+ElementPlus el-date-picker設(shè)置可選時間范圍的示例代碼

    Vue3+ElementPlus el-date-picker設(shè)置可選時間范圍的示例代碼

    在Vue3中使用Element Plus的el-date-picker組件設(shè)置可選時間范圍,你可以使用disabled-date屬性,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-07-07
  • Vue3+Ts實現(xiàn)緩存功能的示例代碼

    Vue3+Ts實現(xiàn)緩存功能的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Vue3+Ts如何實現(xiàn)緩存,用戶搜索詞本地排名,延遲消費或者消息隊列,用戶簽到和鎖,以及接口限流,還有全局ID等功能,需要的可以參考下
    2024-03-03
  • 關(guān)于Vue組件庫開發(fā)詳析

    關(guān)于Vue組件庫開發(fā)詳析

    這篇文章主要給大家介紹了關(guān)于Vue組件庫開發(fā)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07

最新評論

织金县| 兴安县| 汕尾市| 拉萨市| 桃园县| 洛扎县| 全南县| 玉溪市| 甘泉县| 广汉市| 舞钢市| 文安县| 长沙市| 澎湖县| 通辽市| 随州市| 班戈县| 无为县| 临猗县| 贡觉县| 肥城市| 德保县| 济南市| 教育| 垣曲县| 桦甸市| 白水县| 会理县| 西吉县| 丹棱县| 睢宁县| 潜江市| 叙永县| 垣曲县| 中江县| 岫岩| 贵定县| 天长市| 昌吉市| 淮滨县| 保山市|