Skip to content

Commit

Permalink
feat: change evaluate minify* options
Browse files Browse the repository at this point in the history
  • Loading branch information
bluwy committed Jun 27, 2022
1 parent b6987c6 commit fd1281b
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 14 deletions.
2 changes: 1 addition & 1 deletion docs/config/shared-options.md
Expand Up @@ -280,7 +280,7 @@ export default defineConfig({
})
```

When [`build.minify`](./build-options.md#build-minify) is `true`, you can configure to only minify [certain aspects](https://esbuild.github.io/api/#minify) of the code by setting either of `esbuild.minifyIdentifiers`, `esbuild.minifySyntax`, and `esbuild.minifyWhitespace` to `true`. Note the `esbuild.minify` option can't be used to override `build.minify`.
When [`build.minify`](./build-options.md#build-minify) is `true`, all minify optimizations are applied by default. To disable [certain aspects](https://esbuild.github.io/api/#minify) of it, set any of `esbuild.minifyIdentifiers`, `esbuild.minifySyntax`, or `esbuild.minifyWhitespace` options to `false`. Note the `esbuild.minify` option can't be used to override `build.minify`.

Set to `false` to disable esbuild transforms.

Expand Down
29 changes: 28 additions & 1 deletion packages/vite/src/node/__tests__/plugins/esbuild.spec.ts
Expand Up @@ -41,6 +41,31 @@ describe('resolveEsbuildTranspileOptions', () => {
expect(options).toEqual(null)
})

test('resolve specific minify options', () => {
const options = resolveEsbuildTranspileOptions(
defineResolvedConfig({
build: {
minify: 'esbuild'
},
esbuild: {
keepNames: true,
minifyIdentifiers: false
}
}),
'es'
)
expect(options).toEqual({
target: undefined,
format: 'esm',
keepNames: true,
minify: false,
minifyIdentifiers: false,
minifySyntax: true,
minifyWhitespace: true,
treeShaking: true
})
})

test('resolve no minify', () => {
const options = resolveEsbuildTranspileOptions(
defineResolvedConfig({
Expand Down Expand Up @@ -140,6 +165,7 @@ describe('resolveEsbuildTranspileOptions', () => {
keepNames: true,
minify: false,
minifyIdentifiers: true,
minifySyntax: true,
minifyWhitespace: false,
treeShaking: true
})
Expand All @@ -157,7 +183,7 @@ describe('resolveEsbuildTranspileOptions', () => {
esbuild: {
keepNames: true,
minifyIdentifiers: true,
minifyWhitespace: true,
minifySyntax: false,
treeShaking: true
}
}),
Expand All @@ -169,6 +195,7 @@ describe('resolveEsbuildTranspileOptions', () => {
keepNames: true,
minify: false,
minifyIdentifiers: true,
minifySyntax: false,
minifyWhitespace: true,
treeShaking: true
})
Expand Down
14 changes: 7 additions & 7 deletions packages/vite/src/node/plugins/css.ts
Expand Up @@ -19,7 +19,7 @@ import type Sass from 'sass'
import type Stylus from 'stylus'
import type Less from 'less'
import type { Alias } from 'types/alias'
import type { TransformOptions } from 'esbuild';
import type { TransformOptions } from 'esbuild'
import { formatMessages, transform } from 'esbuild'
import type { RawSourceMap } from '@ampproject/remapping'
import { getCodeWithSourcemap, injectSourcesContent } from '../server/sourcemap'
Expand Down Expand Up @@ -1237,14 +1237,14 @@ function resolveEsbuildMinifyOptions(
options: ESBuildOptions
): TransformOptions {
if (
options.minifyIdentifiers ||
options.minifySyntax ||
options.minifyWhitespace
options.minifyIdentifiers != null ||
options.minifySyntax != null ||
options.minifyWhitespace != null
) {
return {
minifyIdentifiers: options.minifyIdentifiers,
minifySyntax: options.minifySyntax,
minifyWhitespace: options.minifyWhitespace
minifyIdentifiers: options.minifyIdentifiers ?? true,
minifySyntax: options.minifySyntax ?? true,
minifyWhitespace: options.minifyWhitespace ?? true
}
} else {
return { minify: true }
Expand Down
11 changes: 8 additions & 3 deletions packages/vite/src/node/plugins/esbuild.ts
Expand Up @@ -318,22 +318,27 @@ export function resolveEsbuildTranspileOptions(

// If user enable fine-grain minify options, minify with their options instead
if (
options.minifyIdentifiers ||
options.minifySyntax ||
options.minifyWhitespace
options.minifyIdentifiers != null ||
options.minifySyntax != null ||
options.minifyWhitespace != null
) {
if (isEsLibBuild) {
// Disable minify whitespace as it breaks tree-shaking
return {
...options,
minify: false,
minifyIdentifiers: options.minifyIdentifiers ?? true,
minifySyntax: options.minifySyntax ?? true,
minifyWhitespace: false,
treeShaking: true
}
} else {
return {
...options,
minify: false,
minifyIdentifiers: options.minifyIdentifiers ?? true,
minifySyntax: options.minifySyntax ?? true,
minifyWhitespace: options.minifyWhitespace ?? true,
treeShaking: true
}
}
Expand Down
3 changes: 1 addition & 2 deletions playground/minify/vite.config.js
Expand Up @@ -2,7 +2,6 @@ import { defineConfig } from 'vite'

export default defineConfig({
esbuild: {
minifyIdentifiers: true,
minifyWhitespace: true
minifySyntax: false
}
})

0 comments on commit fd1281b

Please sign in to comment.