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-devdev: false,// Install missing peerDependenciespeerDependencies: true,// Reduce amount of console loggingquiet: false,// npm command used inside company, yarn is not supported yetnpm: 'cnpm'}]}}})}}}
mini.output
object
可用于修改、拓展 Webpack 的 output 选项,配置项参考官方文档。
mini.postcss
object
配置 postcss 相关插件。
module.exports = {// ...mini: {// ...postcss: {// 可以进行 autoprefixer 的配置。配置项参考官方文档 https://github.com/postcss/autoprefixerautoprefixer: {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 功能,则设为 trueconfig: {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 配置。配置项参考官方文档。