# 配置项

默认情况下,cli不需要任何配置即可运行在一个标准小程序项目中。然而在实际生产项目中,针对不同项目个性化配置是必不可少的,此时可以在项目根目录下新建一个wxa.config.js,根据需要增加、删除对应配置,cli将根据配置文件进行编译工作。

# 默认配置

wxa的默认配置如下:


let context = path.resolve(this.cwd, 'src');
module.exports = {
    target: 'wxa',
    dependencyManager: 'npm',
    context,
    resolve: {
        wxaExt: '.wxa',
        extensions: ['.js', '.json'],
        appScriptPath: path.join(context, 'app.js'),
        appConfigPath: path.join(context, 'app.json'),
        alias: {
            '@': path.join(this.cwd, 'src'),
        },
    },
    entry: [path.resolve(this.cwd, 'src/app*'), path.resolve(this.cwd, 'src/project.config.json'), path.resolve(this.cwd, 'src/ext.json')],
    output: {
        path: path.resolve(this.cwd, 'dist'),
    },
    use: [
        {
            test: /\.js$/,
            name: 'babel',
        },
        {
            test: /\.sass|\.scss/,
            name: 'sass',
        },
    ],
    optimization: {
        // 自动分配第三方依赖到分包和主包
        splitDeps: {
            maxDeps: -1,
        },
        // 是否允许空属性,请勿轻易改动,除非你很清楚自己在做什么
        allowEmptyAttributes: true,
        // 是否自动将 px 转为 rpx 单位
        transformPxToRpx: false,
    },
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# target

  • 类型: String Default: wxa
  • 用法:

编译的目标,当前只支持编译到微信小程序,即 wxa

# context

  • 类型: String Default: path.resolve(this.cwd, 'src')
  • 用法:

上下文。所有项目中的绝对路径都基于 context 计算。

# resolve

  • 类型: Object
  • 用法:

解析相关配置。

# resolve.wxaExt

  • 类型: String Default: .wxa
  • 用法:

单文件后缀,默认.wxa后缀即为单文件组件。

# resolve.extensions

  • 类型: Array default: ['.js', '.json']
  • 用法:

允许省略后缀的依赖。默认js/json文件可以不写后缀。

# resolve.appConfigPath

  • 类型: String default: path.join(context, 'app.json')
  • 用法:

指定app.json的位置,wxa将根据app.json对所有依赖的页面/分包页面进行编译。

# resolve.alias

  • 类型: Object
  • 用法:

别名

# resolve.exclude

  • 类型: String|Array
  • 用法:

排除编译匹配的依赖

# entry

  • 类型: Array
  • 用法:

入口文件,默认包含app.*project.config.json。支持glob写法。

# output

  • 类型: Object

# output.path

  • 类型: String Default: path.resolve(this.cwd, 'dist')
  • 用法:

指定输出文件夹。

# use

  • 类型: Array

# use / test

  • 类型: RegExp
  • 用法:

指定当前compiler对那些文件生效。

# use / name

  • 类型: String
  • 用法:

指定加载对应的compiler,如babel,则cli将自动加载项目依赖中的@wxa/compiler-babel。 目前支持的compiler有:

# use / options

  • 类型: Object
  • 用法:

传递给对应compiler的配置。

# optimization

# optimization.splitDeps.maxDeps

是否应用依赖分包算法,自动分配依赖到主包分包。默认为 -1,即关闭,maxDeps的含义为当且仅当 N 个分包同时依赖一个第三方的包,该包会被分配到主包,N >= maxDeps。

# optimization.transformPxToRpx

是否自动将 px 转为 rpx 单位,默认 false。打开该开关将自动使用 postcss 插件将项目中的 px 单位按照比例转为rpx 单位

# optimization.allowEmptyAttributes

是否允许空属性,默认 true,不要改动该配置,除非你清楚自己要做什么⚠️。

# plugins

目前支持的插件有:

包名 描述 版本
@wxa/plugin-uglifyjs 压缩美化 Javascript 代码
@wxa/plugin-replace 任意字符替换,用于生产测试参数替换
@wxa/plugin-copy 复制指定静态资源
@wxa/plugin-bind-hijack 劫持小程序bind事件插件
@wxa/plugin-minify-wxml wxml 压缩
@wxa/plugin-postcss 自定义需要引入的postcss插件
@wxa/plugin-dependencies-analysis 项目构建后的模块依赖关系、体积大小等信息可视化, 方便分析项目的优化空间。

示例用法如下:

const UglifyjsPlugin = require('@wxa/plugin-uglifyjs');
const ReplacePlugin = require('@wxa/plugin-replace');
// 根据环境参数不同,替换不同的参数。
let prod = process.env.NODE_ENV === 'production';
// 环境变量
const envlist = [{
    'WXA_ENV': process.env.NODE_ENV || 'development'
}];

module.exports = {
    plugins: [
        // 替换项目中所有符合规则的字符。
        new ReplacePlugin({
            list: envlist,
        }),
    ],
};

if (prod) {
    // 生产环境压缩代码
    module.exports.plugins.push(new UglifyjsPlugin());
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22