Skip to content

[Feature]: 提供更加符合直觉和优雅的配置 #4066

@zhangfisher

Description

@zhangfisher

这个功能解决了什么问题?

多构建产物时的配置

目前当需要配置多个构建产物时是这样的:

export default defineConfig({
  plugins: [moduleTools(), ModulePlugin()],
  buildConfig: [
    {
      input: ['src'],
      format: 'esm',
      splitting: true,
      sourceMap: false,
      minify: 'esbuild',
      dts: false,
      target: 'es2021',
    },
    {
      input: ['src'],
      format: 'cjs',
      splitting: true,
      sourceMap: false,
      minify: 'esbuild',
      dts: false,
      target: 'es2021',
    },
  ]
}) 

显然,配置的冗余比较多。而当我们在构建时多个构建产物是基本需求。

预设配置定制

目前预设配置定制采用buildPresetbuildConfig两个配置项,然后两者在冲突时进行警告提供的方式不够优雅
完全可以将两个配置合为一个

你期望的 API 是什么样子的?

期望: 多构建产物时的配置

export default defineConfig({
  plugins: [moduleTools(), ModulePlugin()],
  buildConfig: [
    {
      input: ['src'],
      format: ['esm','cjs','umd','iife'],
      splitting: true,
      sourceMap: false,
      minify: 'esbuild',
      dts: false,
      target: 'es2021',
    }
  ]
}) 

只需要指定一个format参数即可。

期望:预设配置定制

可以将buildPresetbuildConfig两个配置项合为一个

export default defineConfig({
  plugins: [moduleTools(), ModulePlugin()],
  buildConfig: [
    {
      preset:""npm-library"   //可选配置
     // 以下所有配置均可以覆盖预设配置 
     input: ['src'],
      format: ['esm','cjs','umd','iife'],
      splitting: true,
      sourceMap: false,
      minify:true,         // =true时采用默认压缩方式,如esbuild
      dts: false,
      target: 'es2021',
    },
  {
      preset:""npm-library"   //可选配置
      input: ['lib'],
    }
  ]
}) 

这种方法比起原来的方式更加简单优雅

sourceMapminify这种配置均应该支持=true的配置,采用推荐的最佳配置
比如minify=true时就默认采用esbuild,而不是一定要配一个esbuildtersert,说实话,大部份情况下使用esbuildtersert根本不重要,很多人甚至没听过tersert,只需要简单地配置minify=true就很香了

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions