项目配置

如果你使用自己的脚手架,本篇可直接跳过!

web项目配置

web项目使用的基于webpack5封装的脚手架,配置文件为elux.config.js,目前支持以下选项:

//环境配置,可以为dev(开发环境)和prod(生产环境)分别给予不同配置
interface EnvConfig {
  clientPublicPath: string; //发布目录,默认 /client/
  clientGlobalVar: Record<string, any>; //全局变量,默认 {}
  serverGlobalVar: Record<string, any>; //[SSR]服务端全局变量,默认 {}
  //以上2个全局变量通过process.env.PROJ_ENV,由webpack.DefinePlugin编译到代码中
  defineConstants: Record<string, string>; //自由定义webpack.DefinePlugin替换对象,默认 {}
  //以上例如:defineConstants: {'process.env.CUSTOM': JSON.stringify({aaa: 1})}
  onCompiled: () => void; //webpack编译完成钩子,默认 无
  sourceMap: string; //对应用webpack devtool配置,默认 dev:'eval-cheap-module-source-map'; prod:'hidden-source-map'
  cache: boolean | Record<string, any>; //对应webpack cache配置,默认 true
  eslint: boolean; //是否实时eslint检查,默认 true
  stylelint: boolean; //是否实时stylelint检查,默认 true
  clientMinimize: boolean; //是否压缩代码(仅对prod有效,dev始终为false),默认 true
  serverMinimize: boolean; //[SSR]是否压缩服务端代码(仅对prod有效,dev始终为false),默认 false
  resolveAlias: Record<string, string>; //对应webpack resolve.alias,默认 {}
  urlLoaderLimitSize: number; //对应webpack dataUrlCondition.maxSize,默认 4096
  apiProxy: Record<string, {target: string}>; //对应webpack devServer.proxy,默认 {}
  serverPort: number; //对应webpack devServer.prot,默认 4003
  webpackConfigTransform: (config: WebpackConfig) => WebpackConfig; //完全自定义webpack配置
  //以上可通回调函数自由修改webpack配置,利用config.name可以区分是否是[SSR]
}

//项目配置
interface EluxConfig {
  type: 'vue' | 'react' | 'vue ssr' | 'react ssr'; //项目类型,默认 空
  mockServer: {port: number; dir: string;}; //mock假数据配置,不需要假数据可以不配置,默认 {dir: './mock', port: 3003}
  srcPath: string; //源代码目录,默认 ./src
  distPath: string; //编译产出目录,默认 ./dist
  publicPath: string; //静态文件目录,默认 ./public
  //css预处理配置,参见less-loader和sass-loader,默认 {less: false, sass: false}
  cssProcessors: {less: Record<string, any> | boolean; sass: Record<string, any> | boolean};
  cssModulesOptions: Record<string, any>; //对应css-loader.modules,默认 {}
  moduleFederation: Record<string, any>; //webpack5 模块联邦配置,参见本站‘微模块’章节,默认 {}
  devServerConfigTransform: (config: DevServerConfig) => DevServerConfig; //完全自定义webpack.devServer配置
  //以上可通回调函数自由修改webpack.devServer配置,默认 空
  all: EnvConfig; //dev(开发环境)和prod(生产环境)通用的环境配置
  dev?: Partial<EnvConfig>; //dev(开发环境) 专用配置,可覆盖all
  prod?: Partial<EnvConfig>; //prod(生产环境) 专用配置,可覆盖all
}

如果以上选项不够用,可通过回调函数直接修改webpack配置,参见webpack5配置

  • webpackConfigTransform: (config: WebpackConfig) => WebpackConfig;
  • devServerConfigTransform: (config: DevServerConfig) => DevServerConfig;

elux.config.js 配置举例:

const {localIP} = require('@elux/cli-utils');
const serverPort = 4003;
const apiHosts = `http://${localIP}:3003/`;

module.exports = {
    type: 'react',
    mockServer: {port: 3003},
    cssProcessors: {less: true},
    all: { //开发和生成环境都使用的配置
        serverPort,
        clientGlobalVar: {
            ApiPrefix: apiHosts,
            StaticPrefix: apiHosts,
        },
    },
    dev: { //开发环境专用配置
        eslint: false,
        stylelint: false,
    },
}

taro项目配置

taro项目直接使用官方脚手架:https://taro-docs.jd.com/taro/docs/open in new window