Taro mini
mini
object
专属于小程序的配置。
mini.compile
object
小程序编译过程的相关配置。
mini.compile.exclude
array
配置小程序编译过程中排除不需要经过 Taro 编译的文件,数组里面可以包含具体文件路径,也可以是判断函数,同 Rule.exclude。
假设要排除某个文件,可以配置要排除的文件的具体路径:
module.exports = {
// ...
mini: {
// ...
compile: {
exclude: [
path.resolve(__dirname, '..', 'src/pages/index/vod-wx-sdk-v2.js')
]
}
}
}
也可以配置判断函数:
module.exports = {
// ...
mini: {
// ...
compile: {
exclude: [
modulePath => modulePath.indexOf('vod-wx-sdk-v2') >= 0
]
}
}
}
mini.compile.incldue
array
配置额外需要经过 Taro 编译的文件,使用方式与 mini.compile.exclude 一致,同 Rule.include。
例如 Taro 默认不编译 node_modules
中的文件,可以通过这个配置让 Taro 编译 node_modules
中的文件。
mini.webpackChain
function
自定义 Webpack 配置。
这个函数会收到三个参数。第一个参数是 webpackChain 对象,可参考 webpack-chain 的 API 进行修改,第二个参数是 webpack
实例,第三个参数 PARSE_AST_TYPE
是小程序编译时的文件类型集合。
第三个参数的取值如下:
export enum PARSE_AST_TYPE {
ENTRY = 'ENTRY',
PAGE = 'PAGE',
COMPONENT = 'COMPONENT',
NORMAL = 'NORMAL',
STATIC = 'STATIC'
}
例子:
// 这是一个添加 raw-loader 的例子,用于在项目中直接引用 md 文件
module.exports = {
// ...
mini: {
// ...
webpackChain (chain, webpack) {
chain.merge({
module: {
rules: {
myloader: {
test: /\.md$/,
use: [{
loader: 'raw-loader',
options: {}
}]
}
}
}
})
}
}
}
// 这是一个添加插件的例子
module.exports = {
// ...
mini: {
// ...
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'
}]
}
}
})
}
}
}
mini.output
object
可用于修改、拓展 Webpack 的 output 选项,配置项参考官方文档。
mini.postcss
object
配置 postcss
相关插件。
module.exports = {
// ...
mini: {
// ...
postcss: {
// 可以进行 autoprefixer 的配置。配置项参考官方文档 https://github.com/postcss/autoprefixer
autoprefixer: {
enable: true,
config: {
// autoprefixer 配置项
}
},
pxtransform: {
enable: true,
config: {
// pxtransform 配置项,参考尺寸章节
selectorBlackList: ['body']
}
},
// 小程序端样式引用本地资源内联
url: {
enable: true,
config: {
limit: 10240 // 设定转换尺寸上限
}
},
// css modules 功能开关与相关配置
cssModules: {
enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true
config: {
generateScopedName: '[name]__[local]___[hash:base64:5]'
}
}
}
}
}
mini.commonChunks
array | function
用于告诉 Taro 编译器需要抽取的公共文件,支持两种配置方式。
commonChunks
的配置值必须依据于 webpack 配置 optimization.runtimeChunk 和 optimization.splitChunks 中的公共
chunks 的名称。Taro 中 webpack.optimization 配置的默认值:源码位置。
如果有自行拆分公共文件的需求,请先通过 webpackChain 配置 覆盖
optimization.runtimeChunk
与optimization.splitChunks
配置。再通过此commonChunks
配置指定公共入口文件。
字符串数组方式
普通编译时的默认值:['runtime', 'vendors', 'taro', 'common']
编译为微信小程序插件时的默认值: ['plugin/runtime', 'plugin/vendors', 'plugin/taro', 'plugin/common']
可以传入需要抽取的公共文件的名称数组。
例子:
module.exports = {
// ...
mini: {
// ...
commonChunks: ['runtime', 'vendors', 'taro', 'common']
}
}
这几个公共文件分别表示:
runtime
: webpack 运行时入口taro
: node_modules 中 Taro 相关依赖vendors
: node_modules 除 Taro 外的公共依赖common
: 项目中业务代码公共逻辑
函数方式
通过对入参的默认公共文件数组进行操作,返回新的数组来进行配置,如下
module.exports = {
// ...
mini: {
// ...
commonChunks (commonChunks) {
// commonChunks 的取值即为默认的公共文件名数组
commonChunks.push('yourCustomCommonChunkName')
return commonChunks
}
}
}
mini.addChunkPages
function
为某些页面单独指定需要引用的公共文件。
例如在使用小程序分包的时候,为了减少主包大小,分包的页面希望引入自己的公共文件,而不希望直接放在主包内。那么我们首先可以通过 webpackChain 配置 来单独抽离分包的公共文件,然后通过 mini.addChunkPages
为分包页面配置引入分包的公共文件,其使用方式如下:
mini.addChunkPages
配置为一个函数,接受两个参数
pages
参数为 Map 类型,用于为页面添加公共文件pagesNames
参数为当前应用的所有页面标识列表,可以通过打印的方式进行查看页面的标识
例如,为 pages/index/index
页面添加 eating
和 morning
两个抽离的公共文件:
module.exports = {
// ...
mini: {
// ...
addChunkPages (pages: Map<string, string[]>, pagesNames: string[]) {
pages.set('pages/index/index', ['eating', 'morning'])
}
}
}
mini.styleLoaderOption
object
style-loader
的附加配置。配置项参考官方文档,例如:
module.exports = {
// ...
mini: {
// ...
styleLoaderOption: {
insertAt: 'top'
}
}
}
mini.cssLoaderOption
object
css-loader
的附加配置。配置项参考官方文档,例如:
module.exports = {
// ...
mini: {
// ...
cssLoaderOption: {
localIdentName: '[hash:base64]'
}
}
}
mini.sassLoaderOption
object
sass-loader
的附加配置。配置项参考官方文档,例如:
module.exports = {
// ...
mini: {
// ...
sassLoaderOption: {
implementation: require("dart-sass")
}
}
}
mini.lessLoaderOption
object
less-loader
的附加配置。配置项参考官方文档,例如:
module.exports = {
// ...
mini: {
// ...
lessLoaderOption: {
strictMath: true,
noIeCompat: true
}
}
}
mini.stylusLoaderOption
object
stylus-loader
的附加配置。配置项参考官方文档。
mini.miniCssExtractPluginOption
object
mini-css-extract-plugin
的附加配置,配置项参考官方文档。
module.exports = {
// ...
mini: {
// ...
miniCssExtractPluginOption: {
filename: '[name].css',
chunkFilename: '[name].css'
}
}
}
mini.imageUrlLoaderOption
object
针对 png | jpg | jpeg | gif | bpm | svg
文件的 url-loader
配置。配置项参考官方文档。
mini.mediaUrlLoaderOption
object
针对 mp4 | webm | ogg | mp3 | wav | flac | aac
文件的 url-loader
配置。配置项参考官方文档,例如:
module.exports = {
// ...
mini: {
// ...
mediaUrlLoaderOption: {
limit: 8192
}
}
}
mini.fontUrlLoaderOption
object
针对 woff | woff2 | eot | ttf | otf
文件的 url-loader
配置。配置项参考官方文档。
更多建议: