Skip to content

编译配置

新版的 @mpxjs/cli 整体是基于 @vue/cli 的架构设计开发的。因此有关 mpx 编译构建相关的配置统一使用 vue.config.js 来进行管理。

编译构建配置

mpx 编译构建配置

有关 mpx 相关的 webpack 插件、loader 等在 vue.config.js 当中 pluginOptions.mpx 进行相关的配置:

javascript
// vue.config.js
module.exports = {
  pluginOptions: {
    mpx: {
      // 传入 @mpxjs/webpack-plugin 当中的配置信息
      // 具体可参考文档:https://www.mpxjs.cn/api/compile.html#mpxwebpackplugin-options
      plugin: {
        srcMode: 'wx',
      },
      // 传入 @mpxjs/webpack-plugin loader 当中的配置信息
      // 具体可参考文档:https://www.mpxjs.cn/api/compile.html#mpxwebpackplugin-loader
      loader: {},
      // 提供图片资源处理简单操作
      // 具体配置参考 https://mpxjs.cn/guide/advance/image-process.html#%E5%9B%BE%E5%83%8F%E8%B5%84%E6%BA%90%E5%BC%95%E5%85%A5%E6%9C%89%E4%B8%89%E7%A7%8D%E6%96%B9%E5%BC%8F
      urlLoader: {
        name: 'img/[name][hash].[ext]',
        publicPath: '',
        publicPathScope: '',
        limit: 10
      }
    }
  }
}

注:通过 @mpxjs/cli 初始化的项目提供了开箱即用的配置(在插件内部设置了默认的配置),如果开发过程中有一些其他的配置需求,参见 mpx 官方文档

vue.config.js

以下表格为 vue.config.js 当中 web 侧和 小程序 侧支持的字段一览表,具体每个字段的配置功能请参见 @vue/cli 官方配置

注:yes 表示在对应环境支持配置,no 表示在对应环境不支持配置。

字段web小程序备注
publicPathyesno-
outputDiryesyesdist/${process.env.MPX_CURRENT_TARGET_MODE}目录作为输出目录
assetsDiryesno-
indexPathyesno-
filenameHashingyesno-
pagesyesno-
lintOnSaveyesyes-
runtimeCompileryesno-
transpileDependenciesyesyes-
productionSourceMapyesyes
crossoriginyesno-
integrityyesno-
configureWebpackyesyes-
chainWebpackyesyes-
css.requireModuleExtensionyesno-
css.extractyesno-
css.sourceMapyesno未来会支持
css.loaderOptionsyesno未来会支持
devServeryesno-
devServer.proxyyesno-
parallelyesno-
pwayesno-
pluginOptionsyesyes-

可通过 vue.config.js 中提供的 chainWebpackconfigureWebpack 字段进行配置,具体使用规则请参见@vue/cli

javascript
// vue.config.js
module.exports = {
  configureWebpack: {
    plugins: [new MyOwnWebpackPlugin()]
  },
  chainWebpack: (config) => {
    config
      .rule('some-rule')
      .test(/some-rule/)
      .use('some-loader')
      .loader('some-loader')
  }
}

根据不同的构建目标配置

可根据构建平台和开发环境进行选择性的配置,在构建过程中暴露出来的环境变量包括:

  • MPX_CLI_MODE: 'mp' | 'web' | 'rn'
  • NODE_ENV:'development' | 'production'
  • MPX_CURRENT_TARGET_MODE: 'wx' | 'ali' | 'swan' | 'qq' | 'tt' | 'dd' | 'web' | 'ios' | 'android' | 'harmony'
  • MPX_CURRENT_TARGET_ENV : 'development' | 'production'
javascript
// vue.config.js
module.exports = {
  chainWebpack: (config) => {
    if (process.env.MPX_CLI_MODE === 'mp') {
      // do something
    }

    if (
      process.env.MPX_CLI_MODE === 'web' &&
      process.env.NODE_ENV === 'development'
    ) {
      // do something
    }
  }
}