Vue?cli3?chainWepack使用方法示例詳解
loader
在項目開發(fā)中我們難免碰到需要對webpack配置更改的情況,這就需要對 loader 進行配置。
定義
l o a d e r讓webpack能夠去處理那些非JavaScript文件(webpack自身只理解JavaScript)。loader可以將所有類型的文件轉(zhuǎn)換為webpack能夠處理的有效模塊,然后你就可以利用webpack的打包能力,對它們進行處理。
本質(zhì)上,webpackloader將所有類型的文件,轉(zhuǎn)換為應用程序的依賴圖(和最終的bundle)可以直接引用的模塊。
在webpack配置中定義loader時,要定義在module.rules中,而不是rules*。*
在配置文件中webpack.config.js加入module屬性,該屬性是一個對象,在這個屬性中有一個rules字段。
rules是一個數(shù)組,所有的loader配置都可以寫在這個數(shù)組里,每個loader配置是一個對象。
module:{
rules:[{
test:/.js$/,
use:[{
loader:'babel-loader',
options: {
presets: [
"es2015", "react"
],
plugins: ["syntax-dynamic-import"]
}
}]
}]
}每個 loader 對象配置屬性如下:
- test :test 是 一個 正則表達式, 用來匹配不同的類型文件
- use: use 是 一個 數(shù)組,里面存放使用的 loader 。 當匹配到文件后,將會按use 里面存放的 loader 去解析處理文件的內(nèi)容。
如果使用的是loader的默認配置,可以寫use:'css-loader','style-loader';
如果是需要用到額外配置則需要寫成對象,講配置寫在options里;
use:[{
loader:'babel-loader',
options: {
presets: [
"es2015", "react"
],
plugins: ["syntax-dynamic-import"]
}
}]使用這些loader 時,必須先安裝它們。
多環(huán)境切換 loader 配置
如果你需要基于環(huán)境有條件地配置行為,或者想要直接修改配置,那就換成一個函數(shù) (該函數(shù)會在環(huán)境變量被設置之后懶執(zhí)行)。該方法的第一個參數(shù)會收到已經(jīng)解析好的配置。在函數(shù)內(nèi),你可以直接修改配置,或者返回一個將會被合并的對象:
// vue.config.js
module.exports = {
configureWebpack: config => {
if (process.env.NODE_ENV === 'production') {
// 為生產(chǎn)環(huán)境修改配置...
} else {
// 為開發(fā)環(huán)境修改配置...
}
}
}使用 configureWebpack 簡單配置
/ vue.config.js
module.exports = {
configureWebpack: {
plugins: [
new MyAwesomeWebpackPlugin()
]
}
}該對象將會被 webpack-merge 合并入最終的 webpack 配置。
使用 chainWebpack 高級配置
Vue CLI 內(nèi)部的 webpack 配置是通過 webpack-chain 維護的。這個庫提供了一個 webpack 原始配置的上層抽象,使其可以定義具名的 loader 規(guī)則和具名插件,并有機會在后期進入這些規(guī)則并對它們的選項進行修改。
它允許我們更細粒度的控制其內(nèi)部配置。
1. 修改loader
// vue.config.js
module.exports = {
chainWebpack: config => {
config.module
.rule('vue')
.use('vue-loader')
.loader('vue-loader')
.tap(options => {
// 修改它的選項...
return options
})
}
}2. 添加新的loader
// vue.config.js
module.exports = {
chainWebpack: config => {
// 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()
}
}3.替換一個規(guī)則里的 Loader
如果你想要替換一個已有的[基礎 loade,例如為內(nèi)聯(lián)的 SVG 文件使用 vue-svg-loader 而不是加載這個文件:
// vue.config.js
module.exports = {
chainWebpack: config => {
const svgRule = config.module.rule('svg')
// 清除已有的所有 loader。
// 如果你不這樣做,接下來的 loader 會附加在該規(guī)則現(xiàn)有的 loader 之后。
svgRule.uses.clear()
// 添加要替換的 loader
svgRule
.use('vue-svg-loader')
.loader('vue-svg-loader')
}
}4. 引用全局共用的樣式文件
module.exports = {
// ...
css: {
loaderOptions: {
sass: {
// 根據(jù)自己樣式文件的位置調(diào)整
data: `@import "@src/css/base.scss";`
}
}
}
};以上就是Vue cli3 chainWepack使用方法示例詳解的詳細內(nèi)容,更多關于Vue cli3 chainWepack使用的資料請關注腳本之家其它相關文章!
相關文章
vue項目頁面的打印和下載PDF加loading效果的實現(xiàn)(加水印)
這篇文章主要介紹了vue項目頁面的打印和下載PDF加loading效果的實現(xiàn)(加水印),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
解決vue項目中遇到 Cannot find module ‘chalk‘ 報錯的問題
這篇文章主要介紹了解決vue項目中遇到 Cannot find module ‘chalk‘ 報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
vue中的rules表單校驗規(guī)則使用方法示例詳解 :rules=“rules“
這篇文章主要介紹了vue中的rules表單校驗規(guī)則使用方法示例詳解 :rules=“rules“,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-11-11
使用Vue-scroller頁面input框不能觸發(fā)滑動的問題及解決方法
這篇文章主要介紹了使用Vue-scroller頁面input框不能觸發(fā)滑動的問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08

