Skip to content

Commit

Permalink
Ensure we match comment minify behavior between terser and swc (#68372)
Browse files Browse the repository at this point in the history
Currently we are only strip all comments properly when `swcMinify:
false` is set although the default is to use `swcMinify` which can cause
confusion with these two modes not matching comments handling.

This updates the default to match comment stripping between the two and
also adds an experimental config to allow toggling this regardless of
which minifier is being used.

x-ref: [slack
thread](https://vercel.slack.com/archives/C0676QZBWKS/p1722444791037279)
x-ref: NEXT-3642
  • Loading branch information
ijjk authored and lubieowoce committed Sep 3, 2024
1 parent 550c18f commit 562df1f
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,9 @@ export class TerserPlugin {
: {}),
compress: true,
mangle: true,
output: {
comments: false,
},
}
)

Expand Down
7 changes: 7 additions & 0 deletions test/production/terser-class-static-blocks/pages/index.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
/**
* My JSDoc comment that should be minified away
*
* @author Example One <example1@example.com>
* @author Example Two <example2@example.com>
* @copyright 2024 Vercel Inc
*/
class TestClass {
static text = 'hello world'
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import glob from 'glob'
import { nextTestSetup } from 'e2e-utils'
import path from 'path'

describe('terser-class-static-blocks', () => {
const { next } = nextTestSetup({
const { next, isNextDeploy } = nextTestSetup({
files: __dirname,
nextConfig: {
swcMinify: false,
Expand All @@ -11,4 +13,27 @@ describe('terser-class-static-blocks', () => {
const $ = await next.render$('/')
expect($('p').text()).toBe('hello world')
})

if (!isNextDeploy) {
it('should have stripped away all comments', async () => {
const chunksDir = path.join(next.testDir, '.next/static')
const chunks = glob.sync('**/*.js', {
cwd: chunksDir,
})

expect(chunks.length).toBeGreaterThan(0)

await Promise.all(
chunks.map(async (chunk) => {
expect(
await next.readFile(path.join('.next/static', chunk))
).not.toContain('/*')

expect(
await next.readFile(path.join('.next/static', chunk))
).not.toContain('My JSDoc comment that')
})
)
})
}
})

0 comments on commit 562df1f

Please sign in to comment.