Skip to content

Commit fa5be49

Browse files
developittimneutkens
authored andcommitted
Bugfix: Babel targets value can be a String (vercel#8268)
* Fix modern SSR build when Babel configuration uses a String value for "targets". Fixes vercel#8255. * Add custom babelrc integration tests
1 parent 484f988 commit fa5be49

7 files changed

Lines changed: 58 additions & 1 deletion

File tree

packages/next/build/babel/preset.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,11 @@ module.exports = (
7373
// if not explicitly specified:
7474
if (
7575
(isServer || isTest) &&
76-
(!presetEnvConfig.targets || !('node' in presetEnvConfig.targets))
76+
(!presetEnvConfig.targets ||
77+
!(
78+
typeof presetEnvConfig.targets === 'object' &&
79+
'node' in presetEnvConfig.targets
80+
))
7781
) {
7882
presetEnvConfig.targets = {
7983
// Targets the current process' version of Node. This requires apps be
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"presets": [
3+
[
4+
"next/babel",
5+
{
6+
"preset-env": {
7+
"targets": {
8+
"browsers": "chrome>71"
9+
}
10+
}
11+
}
12+
]
13+
]
14+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default () => <h1>Hello World</h1>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"presets": [
3+
[
4+
"next/babel",
5+
{
6+
"preset-env": {
7+
"targets": "chrome>71"
8+
}
9+
}
10+
]
11+
]
12+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default () => <h1>Hello World</h1>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"presets": [
3+
["next/babel", {
4+
"preset-env": {
5+
"modules": "commonjs"
6+
}
7+
}]
8+
]
9+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/* eslint-env jest */
2+
/* global jasmine */
3+
import { join } from 'path'
4+
import { nextBuild } from 'next-test-utils'
5+
6+
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 60 * 5
7+
8+
describe('Babel', () => {
9+
it('should allow setting targets.browsers', async () => {
10+
await nextBuild(join(__dirname, '../fixtures/targets-browsers'))
11+
})
12+
13+
it('should allow setting targets to a string', async () => {
14+
await nextBuild(join(__dirname, '../fixtures/targets-string'))
15+
})
16+
})

0 commit comments

Comments
 (0)