designWidth 用來設(shè)置設(shè)計稿尺寸,關(guān)于這一部分的配置說明請見設(shè)計稿及尺寸單位這一章節(jié)。
sourceRoot 用來設(shè)置源碼存放目錄,通過 Taro 開發(fā)工具初始化后的項(xiàng)目源碼目錄都是 src,你可以通過修改這一配置來重新指定源碼目錄。
outputRoot 用來設(shè)置代碼編譯后的生產(chǎn)目錄,通過 Taro 開發(fā)工具初始化后的生產(chǎn)目錄都是 dist,你可以通過修改這一配置來重新指定生產(chǎn)目錄。
plugins 用來設(shè)置編譯過程插件,插件機(jī)制基于 實(shí)現(xiàn),目前暴露了兩個鉤子 beforeBuild 和 afterBuild
其中,beforeBuild 將在整體編譯前觸發(fā),可以獲取到編譯的相關(guān)配置,同時也能進(jìn)行修改
afterBuild 將在 webpack 編譯完后執(zhí)行,可以獲取到編譯后的結(jié)果
具體使用方式如下:
首先定義一個插件
class BuildPlugin {
apply (builder) {
builder.hooks.beforeBuild.tap('BuildPlugin', (config) => {
console.log(config)
})
builder.hooks.afterBuild.tap('BuildPlugin', (stats) => {
console.log(stats)
})
}
}
接下來在 plugins 字段中進(jìn)行配置
{
plugins: [
new BuildPlugin()
]
}
用來配置 babel,默認(rèn)配置如下,可以自行添加自己需要的額外的 presets 及 plugins。
babel: {
sourceMap: true,
presets: [
'env'
],
plugins: [
'transform-class-properties',
'transform-decorators-legacy',
'transform-object-rest-spread'
]
}
用來配置 UgligyJS 工具,設(shè)置打包過程中的 JS 代碼壓縮??梢酝ㄟ^ uglify.enable 來設(shè)置是否開啟壓縮,若設(shè)置開啟,則可以通過 uglify.config 來設(shè)置 UgligyJS 的配置項(xiàng),具體配置方式如下:
uglify: {
enable: true,
config: {
// 配置項(xiàng)同 https://github.com/mishoo/UglifyJS2#minify-options
}
}
用來配置 csso 工具,設(shè)置打包過程中的 CSS 代碼壓縮。可以通過 csso.enable 來設(shè)置是否開啟壓縮,若設(shè)置開啟,則可以通過 csso.config 來設(shè)置 csso 的配置項(xiàng),具體配置方式如下:
csso: {
enable: true,
config: {
// 配置項(xiàng)同 https://github.com/css/csso#minifysource-options
}
}
用來配置 sass 工具,設(shè)置打包過程中的 SCSS 代碼編譯。具體配置可以參考node-sass當(dāng)需要全局注入scss文件時,可以添加三個額外參數(shù):resource 、 projectDirectory (v1.2.25開始支持)、data(v1.3.0開始支持),具體配置方式如下:
當(dāng)只有 resource 字段時,可以傳入 scss 文件的絕對路徑。
sass: {
resource: path.resolve(__dirname, '..', 'src/styles/variable.scss')
}
此外,當(dāng)只有 resource 字段時,也可以傳入一個路徑數(shù)組。
sass: {
resource: [
path.resolve(__dirname, '..', 'src/styles/variable.scss'),
path.resolve(__dirname, '..', 'src/styles/mixins.scss')
]
}
你可以額外配置 projectDirectory 字段,這樣你就可以在 resource 里寫相對路徑了。
sass: {
resource: [
'src/styles/variable.scss',
'src/styles/mixins.scss'
],
projectDirectory: path.resolve(__dirname, '..')
}
sass: {
resource: [
'src/styles/variable.scss',
'src/styles/mixins.scss'
],
projectDirectory: path.resolve(__dirname, '..'),
data: '$nav-height: 48px;'
}
用來設(shè)置一些環(huán)境變量如 process.env.NODE_ENV,例如我們想設(shè)置區(qū)分預(yù)覽、打包來做些不同的操作,可以如下配置:
在 config/dev.js 中:
env: {
NODE_ENV: '"development"' // JSON.stringify('development')
}
在 config/prod.js 中:
env: {
NODE_ENV: '"production"' // JSON.stringify('production')
}
這樣就能在代碼中通過 process.env.NODE_ENV === 'development' 來判斷環(huán)境。
用來配置一些全局變量供代碼中進(jìn)行使用,配置方式與 Webpack DefinePlugin 類似,例如:
defineConstants: {
A: JSON.stringify('a') // '"a"'
}
1.2.0 開始支持。
用來配置目錄別名,從而方便書寫代碼引用路徑。例如,使用相對路徑書寫文件引用如下:
import A from '../../componnets/A'
import Utils from '../../utils'
import packageJson from '../../package.json'
import projectConfig from '../../project.config.json'
為了避免書寫多級相對路徑,我們可以如下配置 alias:
alias: {
'@/components': path.resolve(__dirname, '..', 'src/components'),
'@/utils': path.resolve(__dirname, '..', 'src/utils'),
'@/package': path.resolve(__dirname, '..', 'package.json'),
'@/project': path.resolve(__dirname, '..', 'project.config.json'),
}
通過上述配置,可以將 src/components 和 src/utils 目錄配置成別名,將根目錄下的 package.json 和 project.config.json 文件配置成別名,則代碼中的引用改寫如下:
import A from '@/components/A'
import Utils from '@/utils'
import packageJson from '@/package'
import projectConfig from '@/project'
為了讓編輯器(VS Code)不報錯,并繼續(xù)使用自動路徑補(bǔ)全的功能,需要在項(xiàng)目根目錄下的 jsconfig.json 或者 tsconfig.json 中配置 paths 讓編輯器認(rèn)得我們的別名,形式如下:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/components/*": ["./src/components/*"],
"@/utils/*": ["./src/utils/*"],
"@/package": ["./package.json"],
"@/project": ["./project.config.json"],
}
}
}
建議別名使用 @/ 開頭而非僅用 @ 開頭,因?yàn)橛行「怕蕰c某些 scoped 形式的 npm 包(行如:@tarojs/taro, @babel/core)產(chǎn)生命名沖突。
文件 copy 配置,包含兩個配置項(xiàng) patterns 和 options。
用來指定需要拷貝的文件或者目錄,數(shù)組類型,每一項(xiàng)都必須包含 from 、to 的配置,分別代表來源和需要拷貝到的目錄,同時可以設(shè)置 ignore 配置來指定需要忽略的文件, ignore 是指定的 glob 類型字符串,或者 glob 字符串?dāng)?shù)組。
值得注意的是,目前 from 必須指定存在的文件或者目錄,暫不支持 glob 格式, from 和 to 直接置頂項(xiàng)目根目錄下的文件目錄,建議 from 以 src 目錄開頭,to 以 dist 目錄開頭。
一般有如下的使用形式:
copy: {
patterns: [
{ from: 'src/asset/tt/', to: 'dist/asset/tt/', ignore: '*.js' }, // 指定需要 copy 的目錄
{ from: 'src/asset/tt/sd.jpg', to: 'dist/asset/tt/sd.jpg' } // 指定需要 copy 的文件
]
},
拷貝配置,目前可以指定全局的 ignore:
copy: {
options: {
ignore: ['*.js', '*.css'] // 全局的 ignore
}
}
專屬于小程序的配置。
小程序編譯過程的相關(guān)配置。
配置小程序編譯過程中排除不需要經(jīng)過 Taro 編譯的文件,數(shù)組類型,數(shù)組里面可以包含具體文件路徑,也可以是判斷函數(shù),同 Rule.exclude
例如,想要排除某個文件,可以如下配置要排除的文件具體路徑:
const config = {
mini: {
compile: {
exclude: [
path.resolve(__dirname, '..', 'src/pages/index/vod-wx-sdk-v2.js')
]
}
}
}
也可以配置判斷函數(shù),如下
const config = {
mini: {
compile: {
exclude: [
function (modulePath) {
return modulePath.indexOf('vod-wx-sdk-v2') >= 0
}
]
}
}
}
配置額外需要經(jīng)過 Taro 編譯的文件,例如 Taro 默認(rèn)不編譯 node_modules 包中文件,可以通過這個配置讓 Taro 編譯 node_modules 包中文件,使用方式與 mini.compile.exclude 一致,同 Rule.include。
自定義 Webpack 配置,接受函數(shù)形式的配置。
這個函數(shù)會收到三個參數(shù),第一個參數(shù)是 webpackChain 對象,可參考 webpack-chain 的 api 進(jìn)行修改;第二個參數(shù)是 webpack 實(shí)例;第三個參數(shù) PARSE_AST_TYPE 是小程序編譯時的文件類型集合。例如:
// 這是一個添加 raw-loader 的例子,用于在項(xiàng)目中直接引用 md 文件
{
webpackChain (chain, webpack) {
chain.merge({
module: {
rules: {
myloader: {
test: /\.md$/,
use: [{
loader: 'raw-loader',
options: {}
}]
}
}
}
})
}
}
// 這是一個添加插件的例子
{
webpackChain (chain, webpack) {
chain.merge({
plugin: {
install: {
plugin: require('npm-install-webpack-plugin'),
args: [{
// Use --save or --save-dev
dev: false,
// Install missing peerDependencies
peerDependencies: true,
// Reduce amount of console logging
quiet: false,
// npm command used inside company, yarn is not supported yet
npm: 'cnpm'
}]
}
}
})
}
}
注意:第三個參數(shù)的取值如下
export enum PARSE_AST_TYPE {
ENTRY = 'ENTRY',
PAGE = 'PAGE',
COMPONENT = 'COMPONENT',
NORMAL = 'NORMAL',
STATIC = 'STATIC'
}
type commonChunks = string[] | ((commonChunks: string[]) => string[])
配置打包時抽離的公共文件
支持兩種配置方式,其一是字符串?dāng)?shù)組,給定抽離公共文件名,在 Taro 編譯中,如果是普通編譯,則 commonChunks 默認(rèn)值為 ['runtime', 'vendors', 'taro', 'common'],如果是編譯為微信小程序插件,則 commonChunks 默認(rèn)值為 ['plugin/runtime', 'plugin/vendors', 'plugin/taro', 'plugin/common'],普通編譯時默認(rèn)配置
const config = {
mini: {
commonChunks: ['runtime', 'vendors', 'taro', 'common']
}
}
這幾個公共文件分別表示:
其二是函數(shù),通過對入?yún)⒌哪J(rèn)公共文件數(shù)組進(jìn)行操作,返回新的數(shù)組來進(jìn)行配置,如下
const config = {
mini: {
commonChunks (commonChunks) {
// commonChunks 的取值即為默認(rèn)的公共文件名數(shù)組
commonChunks.push('yourCustomCommonChunkName')
return commonChunks
}
}
}
commonChunks 的配置值主要依據(jù) webpack 配置 optimization.runtimeChunk 和 optimization.splitChunks,Taro 中默認(rèn)的配置分別為
optimization: {
runtimeChunk: {
name: 'runtime'
},
splitChunks: {
chunks: 'all',
maxInitialRequests: Infinity,
minSize: 0,
name: 'vendors',
cacheGroups: {
common: {
name: !!config.isBuildPlugin ? 'plugin/common' : 'common',
minChunks: 2,
priority: 1
},
vendors: {
name: !!config.isBuildPlugin ? 'plugin/vendors' : 'vendors',
minChunks: 2,
test: module => {
// 如果需要自定義配置,PARSE_AST_TYPE 可以從 webpackChain 第三個參數(shù)獲得
return /[\\/]node_modules[\\/]/.test(module.resource) && module.miniType !== PARSE_AST_TYPE.COMPONENT
},
priority: 10
},
taro: {
name: !!config.isBuildPlugin ? 'plugin/taro' : 'taro',
test: module => {
// buildAdapter 為當(dāng)前編譯的端,在配置文件中可以通過 process.env.TARO_ENV 來獲取
const taroBaseReg = new RegExp(`@tarojs[\\/]taro|@tarojs[\\/]${buildAdapter}`)
return taroBaseReg.test(module.context)
},
priority: 100
}
}
}
}
如果有自行拆分公共文件的需求,請先通過 webpackChain 配置覆蓋 optimization.runtimeChunk 與 optimization.splitChunks 配置,再通過 commonChunks 配置指定的公共入口文件。
2.0.5 開始支持 type addChunkPages = ((pages: Map, pagesNames?: string[]) => void)
在某些情況下,我們可能需要為某些頁面單獨(dú)指定需要引用的公共文件,例如,使用小程序分包的時候,為了減少主包大小,分包的頁面希望引入自己的公共文件,而不希望直接放在主包內(nèi),那么我們首先可以通過配置 mini.webpackChain 來單獨(dú)抽離分包的公共文件,然后通過 mini.addChunkPages 為分包頁面配置引入子包公共文件,其使用方式如下:
mini.addChunkPages 配置為一個函數(shù),接受兩個參數(shù)
例如,為 pages/index/index 頁面添加 eating 和 morning 兩個抽離的公共文件
const config = {
mini: {
addChunkPages (pages, pagesNames) {
pages.set('pages/index/index', ['eating', 'morning'])
}
}
}
css-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
cssLoaderOption: {
localIdentName: '[hash:base64]'
}
}
style-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
styleLoaderOption: {
insertAt: 'top'
}
}
sass-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
sassLoaderOption: {
implementation: require("dart-sass")
}
}
less-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
lessLoaderOption: {
strictMath: true,
noIeCompat: true
}
}
stylus-loader 的附加配置。配置項(xiàng)參考官方文檔。
針對 mp4 | webm | ogg | mp3 | wav | flac | aac 文件的 url-loader 配置。配置項(xiàng)參考官方文檔,例如:
{
mediaUrlLoaderOption: {
limit: 8192
}
}
針對 woff | woff2 | eot | ttf | otf 文件的 url-loader 配置。配置項(xiàng)參考官方文檔。
針對 png | jpg | jpeg | gif | bpm | svg 文件的 url-loader 配置。配置項(xiàng)參考官方文檔。
mini-css-extract-plugin 的附加配置,在 enableExtract 為 true 的情況下生效。 配置項(xiàng)參考官方文檔,例如:
{
miniCssExtractPluginOption: {
filename: '[name].css',
chunkFilename: '[name].css'
}
}
配置 postcss 相關(guān)插件:
postcss: {
// 可以進(jìn)行 autoprefixer 的配置。配置項(xiàng)參考官方文檔 https://github.com/postcss/autoprefixer
autoprefixer: {
enable: true,
config: {
// autoprefixer 配置項(xiàng)
}
},
pxtransform: {
enable: true,
config: {
// pxtransform 配置項(xiàng),參考尺寸章節(jié)
selectorBlackList: ['body']
}
},
// 小程序端樣式引用本地資源內(nèi)聯(lián)
url: {
enable: true,
config: {
limit: 10240 // 設(shè)定轉(zhuǎn)換尺寸上限
}
},
// css modules 功能開關(guān)與相關(guān)配置
cssModules: {
enable: false, // 默認(rèn)為 false,如需使用 css modules 功能,則設(shè)為 true
config: {
generateScopedName: '[name]__[local]___[hash:base64:5]'
}
}
}
專屬于 H5 的配置。
預(yù)覽服務(wù)的配置,可以更改端口等參數(shù)。具體配置參考 webpack-dev-server。
devServer: {
port: 10086
}
默認(rèn)是 http 服務(wù),如果想開啟 https 服務(wù)需要做如下配置。
devServer: {
https: true
}
輸出配置
output: {
filename: 'js/[name].[hash:8].js',
chunkFilename: 'js/[name].[chunkhash:8].js'
}
設(shè)置輸出解析文件的目錄。
h5 編譯后的靜態(tài)文件目錄。
編譯后非 entry 的 js 文件的存放目錄,主要影響動態(tài)引入的 pages 的存放路徑。
自定義 Webpack 配置,接受函數(shù)形式的配置。
這個函數(shù)會收到兩個參數(shù),第一個參數(shù)是 webpackChain 對象,可參考 webpack-chain 的 api 進(jìn)行修改;第二個參數(shù)是 webpack 實(shí)例。例如:
// 這是一個添加 ts-loader 的例子,但事實(shí)上 taro 是默認(rèn)支持 ts 的,并不需要這樣做。
{
webpackChain (chain, webpack) {
chain.merge({
module: {
rule: {
myloader: {
test: /.tsx?/,
use: [{
loader: 'ts-loader',
options: {}
}]
}
}
}
})
}
}
// 這是一個添加插件的例子
{
webpackChain (chain, webpack) {
chain.merge({
plugin: {
install: {
plugin: require('npm-install-webpack-plugin'),
args: [{
// Use --save or --save-dev
dev: false,
// Install missing peerDependencies
peerDependencies: true,
// Reduce amount of console logging
quiet: false,
// npm command used inside company, yarn is not supported yet
npm: 'cnpm'
}]
}
}
})
}
}
路由相關(guān)的配置,支持路由模式、路由基準(zhǔn)路徑以及自定義路由的配置。
路由模式配置。配置值為 hash(默認(rèn)值)或 browser,分別對應(yīng) hash 路由模式和瀏覽器 history 路由模式。例子:
h5: {
/* 其他配置 */
... ,
router: {
mode: 'hash' // 或者是 'browser'
}
}
針對上面的配置,調(diào)用 Taro.navigateTo({ url: '/pages/index/index' }) 后,瀏覽器地址欄將被變?yōu)?nbsp;http://{{domain}}/#/pages/index/index(hash 模式)或者 http://{{domain}}/pages/index/index(browser 模式)。
路由基準(zhǔn)路徑的配置,配置值為 string 類型。例子:
h5: {
/* 其他配置 */
... ,
router: {
basename: '/myapp'
}
}
針對上面的配置,調(diào)用 Taro.navigateTo({ url: '/pages/index/index' }) 后,瀏覽器地址欄將被變?yōu)?nbsp;http://{{domain}}/#/myapp/pages/index/index(hash 模式)或者 http://{{domain}}/myapp/pages/index/index(browser 模式)。
自定義路由的配置,配置值為 { [key: string]: string } 類型。例子:
h5: {
/* 其他配置 */
... ,
router: {
customRoutes: {
'/pages/index/index': '/index'
}
}
}
針對上面的配置,調(diào)用 Taro.navigateTo({ url: '/pages/index/index' }) 后,瀏覽器地址欄將被變?yōu)?nbsp;http://{{domain}}/#/index(hash 模式)或者 http://{{domain}}/myapp/index(browser 模式)。
Taro app 的入口,同 webpack.entry。
{
entry: {
home: ['./home.js'],
about: ['./about.js'],
contact: ['./contact.js']
}
}
sourceMap 開關(guān),影響 js、css 的 sourceMap 配置。 dev 狀態(tài)默認(rèn) 開,prod 狀態(tài)默認(rèn) 關(guān)。
sourceMap格式, 默認(rèn)cheap-module-eval-source-map。具體配置
extract 功能開關(guān),開啟后將使用 mini-css-extract-plugin 分離 css 文件, 可通過 h5.miniCssExtractPluginOption 對插件進(jìn)行配置。 dev 狀態(tài)默認(rèn) 關(guān),prod 狀態(tài)默認(rèn) 開。
配置需要額外的編譯的源碼模塊,比如 taro-ui:
h5: {
// 經(jīng)過這一配置之后,代碼中引入的處于 `node_modules/taro-ui/` 路徑下的源碼文件均會經(jīng)過taro的編譯處理。
esnextModules: ['taro-ui'],
...
}
css-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
cssLoaderOption: {
localIdentName: '[hash:base64]'
}
}
style-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
styleLoaderOption: {
insertAt: 'top'
}
}
sass-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
sassLoaderOption: {
implementation: require("dart-sass")
}
}
less-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
lessLoaderOption: {
strictMath: true,
noIeCompat: true
}
}
stylus-loader 的附加配置。配置項(xiàng)參考官方文檔。
針對 mp4 | webm | ogg | mp3 | wav | flac | aac 文件的 url-loader 配置。配置項(xiàng)參考官方文檔,例如:
{
mediaUrlLoaderOption: {
limit: 8192
}
}
針對 woff | woff2 | eot | ttf | otf 文件的 url-loader 配置。配置項(xiàng)參考官方文檔。
針對 png | jpg | jpeg | gif | bpm | svg 文件的 url-loader 配置。配置項(xiàng)參考官方文檔。
mini-css-extract-plugin 的附加配置,在 enableExtract 為 true 的情況下生效。 配置項(xiàng)參考官方文檔,例如:
{
miniCssExtractPluginOption: {
filename: 'css/[name].css',
chunkFilename: 'css/[id].css'
}
}
配置 H5 的 postcss 插件。
可以進(jìn)行 autoprefixer 的配置。配置項(xiàng)參考官方文檔,例如:
postcss: {
autoprefixer: {
enable: true,
config: {
/* autoprefixer 配置項(xiàng) */
}
}
}
可以進(jìn)行 pxtransform 的配置。配置項(xiàng)參考官方文檔,例如:
postcss: {
pxtransform: {
enable: true,
config: {
/* pxtransform 配置項(xiàng) */
}
}
}
可以進(jìn)行 H5 端 CSS Modules 配置,配置如下:
postcss: {
// css modules 功能開關(guān)與相關(guān)配置
cssModules: {
enable: false, // 默認(rèn)為 false,如需使用 css modules 功能,則設(shè)為 true
config: {
namingPattern: 'module',
generateScopedName: '[name]__[local]___[hash:base64:5]'
}
}
}
專屬于 RN 的配置。
React Native 的 app.json 配置。
RN 編譯過程的相關(guān)配置。
配置 RN 編譯過程中排除不需要經(jīng)過 Taro 編譯的文件,數(shù)組類型,數(shù)組里面可以包含具體文件路徑,也可以是判斷函數(shù),同 Rule.exclude
例如,想要排除某個文件,可以如下配置要排除的文件具體路徑:
const config = {
rn: {
compile: {
exclude: [
path.resolve(__dirname, '..', 'src/pages/index/vod-wx-sdk-v2.js')
]
}
}
}
也可以配置判斷函數(shù),如下
const config = {
rn: {
compile: {
exclude: [
function (modulePath) {
return modulePath.indexOf('vod-wx-sdk-v2') >= 0
}
]
}
}
}
配置額外需要經(jīng)過 Taro 編譯的文件,例如 Taro 默認(rèn)不編譯 node_modules 包中文件,可以通過這個配置讓 Taro 編譯 node_modules 包中文件,使用方式與 rn.compile.exclude 一致,同 Rule.include。
自定義 Webpack 配置,接受函數(shù)形式的配置。
這個函數(shù)會收到三個參數(shù),第一個參數(shù)是 webpackChain 對象,可參考 webpack-chain 的 api 進(jìn)行修改;第二個參數(shù)是 webpack 實(shí)例;第三個參數(shù) PARSE_AST_TYPE 是小程序編譯時的文件類型集合。例如:
// 這是一個添加 raw-loader 的例子,用于在項(xiàng)目中直接引用 md 文件
{
webpackChain (chain, webpack) {
chain.merge({
module: {
rule: {
myloader: {
test: /\.md$/,
use: [{
loader: 'raw-loader',
options: {}
}]
}
}
}
})
}
}
// 這是一個添加插件的例子
{
webpackChain (chain, webpack) {
chain.merge({
plugin: {
install: {
plugin: require('npm-install-webpack-plugin'),
args: [{
// Use --save or --save-dev
dev: false,
// Install missing peerDependencies
peerDependencies: true,
// Reduce amount of console logging
quiet: false,
// npm command used inside company, yarn is not supported yet
npm: 'cnpm'
}]
}
}
})
}
}
注意:第三個參數(shù)的取值如下
export enum PARSE_AST_TYPE {
ENTRY = 'ENTRY',
PAGE = 'PAGE',
COMPONENT = 'COMPONENT',
NORMAL = 'NORMAL',
STATIC = 'STATIC'
}
css-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
cssLoaderOption: {
localIdentName: '[hash:base64]'
}
}
style-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
styleLoaderOption: {
insertAt: 'top'
}
}
sass-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
sassLoaderOption: {
implementation: require("dart-sass")
}
}
less-loader 的附加配置。配置項(xiàng)參考官方文檔,例如:
{
lessLoaderOption: {
strictMath: true,
noIeCompat: true
}
}
stylus-loader 的附加配置。配置項(xiàng)參考官方文檔。
針對 mp4 | webm | ogg | mp3 | wav | flac | aac 文件的 url-loader 配置。配置項(xiàng)參考官方文檔,例如:
{
mediaUrlLoaderOption: {
limit: 8192
}
}
針對 woff | woff2 | eot | ttf | otf 文件的 url-loader 配置。配置項(xiàng)參考官方文檔。
針對 png | jpg | jpeg | gif | bpm | svg 文件的 url-loader 配置。配置項(xiàng)參考官方文檔。
mini-css-extract-plugin 的附加配置,在 enableExtract 為 true 的情況下生效。 配置項(xiàng)參考官方文檔,例如:
{
miniCssExtractPluginOption: {
filename: '[name].css',
chunkFilename: '[name].css'
}
}
配置 postcss 相關(guān)插件:
postcss: {
// 可以進(jìn)行 autoprefixer 的配置。配置項(xiàng)參考官方文檔 https://github.com/postcss/autoprefixer
autoprefixer: {
enable: true,
config: {
// autoprefixer 配置項(xiàng)
}
},
pxtransform: {
enable: true,
config: {
// pxtransform 配置項(xiàng),參考尺寸章節(jié)
selectorBlackList: ['body']
}
},
// 小程序端樣式引用本地資源內(nèi)聯(lián)
url: {
enable: true,
config: {
limit: 10240 // 設(shè)定轉(zhuǎn)換尺寸上限
}
},
// css modules 功能開關(guān)與相關(guān)配置
cssModules: {
enable: false, // 默認(rèn)為 false,如需使用 css modules 功能,則設(shè)為 true
config: {
generateScopedName: '[name]__[local]___[hash:base64:5]'
}
}
}
更多建議: