Skip to content

legacy plugin forces minify #6266

@agriffis

Description

@agriffis

Describe the bug

When the legacy plugin is added, minification can't be disabled. For example, with this config:

{
  build: {minify: false},
  plugins: [react(), legacy({targets: ['defaults', 'not IE 11']})]
}

The output js is minified. This includes both the original js and the legacy js. The plugin forces it on for both.

Reproduction

Here is an example repo: https://github.com/agriffis/vite-issue-repro-legacy-minify

I included dist in the repo so you can see the result without bothering to clone it. Inside dist, both index.bc5679cc.js and index-legacy.4d822f6a.js are minified, even though the config has minification disabled.

System Info

System:
    OS: Linux 5.14 Fedora 33 (Server Edition) 33 (Server Edition)
    CPU: (12) x64 Intel Core Processor (Skylake, IBRS)
    Memory: 2.85 GB / 15.62 GB
    Container: Yes
    Shell: 5.0.17 - /bin/bash
  Binaries:
    Node: 14.18.1 - /usr/bin/node
    Yarn: 1.22.17 - /usr/local/bin/yarn
    npm: 8.1.3 - /usr/local/bin/npm
  npmPackages:
    @vitejs/plugin-legacy: ^1.6.4 => 1.6.4 
    @vitejs/plugin-react: ^1.0.7 => 1.1.3 
    vite: ^2.7.2 => 2.7.7

Used Package Manager

npm

Logs

2021-12-26T23:47:20.913Z vite:config bundled config file loaded in 99.79ms
2021-12-26T23:47:20.922Z vite:config using resolved config: {
  build: {
    target: [ 'es2019', 'edge88', 'firefox78', 'chrome87', 'safari13.1' ],
    polyfillModulePreload: true,
    outDir: '/home/aron/src/vite-issue-repro-legacy-minify/dist',
    assetsDir: 'assets',
    assetsInlineLimit: 4096,
    cssCodeSplit: true,
    cssTarget: 'chrome61',
    sourcemap: false,
    rollupOptions: {
      input: '/home/aron/src/vite-issue-repro-legacy-minify/index.html',
      output: [Array]
    },
    minify: 'terser',
    terserOptions: {},
    write: true,
    emptyOutDir: null,
    manifest: false,
    lib: false,
    ssr: false,
    ssrManifest: false,
    reportCompressedSize: true,
    chunkSizeWarningLimit: 500,
    watch: null,
    commonjsOptions: { include: [Array], extensions: [Array] },
    dynamicImportVarsOptions: { warnOnError: true, exclude: [Array] }
  },
  plugins: [
    'alias',
    'vite:react-babel',
    'vite:react-refresh',
    'vite:react-jsx',
    'vite:modulepreload-polyfill',
    'vite:resolve',
    'vite:html-inline-script-proxy',
    'vite:css',
    'vite:esbuild',
    'vite:json',
    'vite:wasm',
    'vite:worker',
    'vite:asset',
    'vite:legacy-config',
    'vite:legacy-generate-polyfill-chunk',
    'vite:legacy-env',
    'vite:define',
    'vite:css-post',
    'vite:watch-package-data',
    'vite:build-html',
    'commonjs',
    'vite:data-uri',
    'rollup-plugin-dynamic-import-variables',
    'vite:asset-import-meta-url',
    'vite:legacy-post-process',
    'vite:build-import-analysis',
    'vite:esbuild-transpile',
    'vite:terser',
    'vite:reporter',
    'vite:load-fallback'
  ],
  resolve: { dedupe: [ 'react', 'react-dom' ], alias: [ [Object], [Object] ] },
  optimizeDeps: {
    include: [ 'react/jsx-dev-runtime' ],
    esbuildOptions: { keepNames: undefined, preserveSymlinks: undefined }
  },
  define: { 'import.meta.env.LEGACY': '__VITE_IS_LEGACY__' },
  configFile: '/home/aron/src/vite-issue-repro-legacy-minify/vite.config.js',
  configFileDependencies: [ 'vite.config.js' ],
  inlineConfig: {
    root: undefined,
    base: undefined,
    mode: undefined,
    configFile: undefined,
    logLevel: undefined,
    clearScreen: undefined,
    build: {}
  },
  root: '/home/aron/src/vite-issue-repro-legacy-minify',
  base: '/',
  publicDir: '/home/aron/src/vite-issue-repro-legacy-minify/public',
  cacheDir: '/home/aron/src/vite-issue-repro-legacy-minify/node_modules/.vite',
  command: 'build',
  mode: 'production',
  isProduction: true,
  server: { fs: { strict: true, allow: [Array], deny: [Array] } },
  preview: {
    port: undefined,
    strictPort: undefined,
    host: undefined,
    https: undefined,
    open: undefined,
    proxy: undefined,
    cors: undefined
  },
  env: { BASE_URL: '/', MODE: 'production', DEV: false, PROD: true },
  assetsInclude: [Function: assetsInclude],
  logger: {
    hasWarned: false,
    info: [Function: info],
    warn: [Function: warn],
    warnOnce: [Function: warnOnce],
    error: [Function: error],
    clearScreen: [Function: clearScreen],
    hasErrorLogged: [Function: hasErrorLogged]
  },
  packageCache: Map(0) { set: [Function (anonymous)] },
  createResolver: [Function: createResolver]
}
vite v2.7.7 building for production...
transforming...
✓ 33 modules transformed.
rendering chunks...
[@vitejs/plugin-legacy] legacy polyfills: Set(4) {
  'core-js/modules/es.promise',
  'core-js/modules/es.array.iterator',
  'core-js/modules/web.dom-collections.iterator.js',
  'core-js/modules/es.string.replace.js'
}
2021-12-26T23:47:24.401Z vite:config using resolved config: {
  root: '/home/aron/src/vite-issue-repro-legacy-minify/node_modules/@vitejs/plugin-legacy',
  configFile: undefined,
  logLevel: 'error',
  plugins: [
    'alias',
    'vite:modulepreload-polyfill',
    'vite:resolve',
    'vite:html-inline-script-proxy',
    'vite:css',
    'vite:esbuild',
    'vite:json',
    'vite:wasm',
    'vite:worker',
    'vite:asset',
    'vite:legacy-polyfills',
    'vite:define',
    'vite:css-post',
    'vite:watch-package-data',
    'vite:build-html',
    'commonjs',
    'vite:data-uri',
    'rollup-plugin-dynamic-import-variables',
    'vite:asset-import-meta-url',
    'vite:build-import-analysis',
    'vite:esbuild-transpile',
    'vite:terser',
    'vite:reporter',
    'vite:load-fallback'
  ],
  build: {
    target: false,
    polyfillModulePreload: true,
    outDir: '/home/aron/src/vite-issue-repro-legacy-minify/node_modules/@vitejs/plugin-legacy/dist',
    assetsDir: 'assets',
    assetsInlineLimit: 4096,
    cssCodeSplit: true,
    cssTarget: false,
    sourcemap: false,
    rollupOptions: { input: [Object], output: [Object] },
    minify: 'terser',
    terserOptions: {},
    write: false,
    emptyOutDir: null,
    manifest: false,
    lib: false,
    ssr: false,
    ssrManifest: false,
    reportCompressedSize: true,
    chunkSizeWarningLimit: 500,
    watch: null,
    commonjsOptions: { include: [Array], extensions: [Array] },
    dynamicImportVarsOptions: { warnOnError: true, exclude: [Array] }
  },
  configFileDependencies: [],
  inlineConfig: {
    root: '/home/aron/src/vite-issue-repro-legacy-minify/node_modules/@vitejs/plugin-legacy',
    configFile: false,
    logLevel: 'error',
    plugins: [ [Object] ],
    build: {
      write: false,
      target: false,
      minify: 'terser',
      assetsDir: 'assets',
      rollupOptions: [Object]
    }
  },
  base: '/',
  resolve: { dedupe: undefined, alias: [ [Object], [Object] ] },
  publicDir: '/home/aron/src/vite-issue-repro-legacy-minify/node_modules/@vitejs/plugin-legacy/public',
  cacheDir: '/home/aron/src/vite-issue-repro-legacy-minify/node_modules/@vitejs/plugin-legacy/node_modules/.vite',
  command: 'build',
  mode: 'production',
  isProduction: true,
  server: { fs: { strict: true, allow: [Array], deny: [Array] } },
  preview: {
    port: undefined,
    strictPort: undefined,
    host: undefined,
    https: undefined,
    open: undefined,
    proxy: undefined,
    cors: undefined
  },
  env: { BASE_URL: '/', MODE: 'production', DEV: false, PROD: true },
  assetsInclude: [Function: assetsInclude],
  logger: {
    hasWarned: false,
    info: [Function: info],
    warn: [Function: warn],
    warnOnce: [Function: warnOnce],
    error: [Function: error],
    clearScreen: [Function: clearScreen],
    hasErrorLogged: [Function: hasErrorLogged]
  },
  packageCache: Map(0) { set: [Function (anonymous)] },
  createResolver: [Function: createResolver],
  optimizeDeps: {
    esbuildOptions: { keepNames: undefined, preserveSymlinks: undefined }
  }
}
dist/assets/index-legacy.4d822f6a.js       1.83 KiB / gzip: 1.01 KiB
dist/assets/polyfills-legacy.f5cb7fcf.js   35.20 KiB / gzip: 14.81 KiB
dist/assets/vendor-legacy.da5e2df0.js      128.19 KiB / gzip: 41.36 KiB
dist/assets/favicon.17e50649.svg   1.49 KiB
dist/assets/logo.ecc203fb.svg      2.61 KiB
dist/index.html                    1.58 KiB
dist/assets/index.bc5679cc.js      1.64 KiB / gzip: 0.84 KiB
dist/assets/index.cd9c0392.css     0.75 KiB / gzip: 0.48 KiB
dist/assets/vendor.73f7496b.js     128.12 KiB / gzip: 41.35 KiB

Validations

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