diff --git a/src/lib/babel-config.js b/src/lib/babel-config.js index 7a8162f3c..80dcbd424 100644 --- a/src/lib/babel-config.js +++ b/src/lib/babel-config.js @@ -1,4 +1,5 @@ export default (env, options={}) => ({ + babelrc: false, presets: [ [require.resolve('babel-preset-env'), { loose: true, diff --git a/src/lib/webpack/transform-config.js b/src/lib/webpack/transform-config.js index 5568aceb5..1e1cd76c1 100644 --- a/src/lib/webpack/transform-config.js +++ b/src/lib/webpack/transform-config.js @@ -17,7 +17,7 @@ export default async function (env, config, ssr = false) { } require('babel-register')({ - presets: ['env'] + presets: [require.resolve('babel-preset-env')] }); const m = require(transformerPath); const transformer = m && m.default || m; diff --git a/src/lib/webpack/webpack-base-config.js b/src/lib/webpack/webpack-base-config.js index ccb356fd1..aebc3f341 100644 --- a/src/lib/webpack/webpack-base-config.js +++ b/src/lib/webpack/webpack-base-config.js @@ -14,6 +14,7 @@ import autoprefixer from 'autoprefixer'; import ProgressBarPlugin from 'progress-bar-webpack-plugin'; import ReplacePlugin from 'webpack-plugin-replace'; import requireRelative from 'require-relative'; +import createBabelConfig from '../babel-config'; export function exists(file) { try { @@ -48,6 +49,7 @@ export default (env) => { env.manifest = readJson(src('manifest.json')) || {}; env.pkg = readJson(resolve(cwd, 'package.json')) || {}; + let babelrc = readJson(resolve(cwd, '.babelrc')) || {}; let browsers = env.pkg.browserslist || ['> 1%', 'last 2 versions', 'IE >= 9']; return group([ @@ -86,12 +88,10 @@ export default (env) => { enforce: 'pre', test: /\.jsx?$/, loader: 'babel-loader', - options: { - babelrc: true, - presets: [ - [resolve(__dirname, '../babel-config'), { browsers }] - ] - } + options: Object.assign( + createBabelConfig(env, { browsers }), + babelrc // intentionall overwrite our settings + ) } ] } diff --git a/tests/build.snapshot.js b/tests/build.snapshot.js index 30eb85049..a289ec1ac 100644 --- a/tests/build.snapshot.js +++ b/tests/build.snapshot.js @@ -66,16 +66,16 @@ export default { 'bundle.js': { size: 18460 }, 'bundle.js.map': { size: 101500 }, 'route-home.chunk.*.js': { size: 1020 }, - 'route-home.chunk.*.js.map': { size: 4283 }, + 'route-home.chunk.*.js.map': { size: 4977 }, 'route-profile.chunk.*.js': { size: 1660 }, - 'route-profile.chunk.*.js.map': { size: 7504 }, + 'route-profile.chunk.*.js.map': { size: 8607 }, 'polyfills.js.map': { size: 31750 }, 'index.html': { size: 870 }, 'style.css': { size: 1065 }, 'style.css.map': { size: 2246 }, 'ssr-build': { 'ssr-bundle.js': { size: 18960 }, - 'ssr-bundle.js.map': { size: 91773 }, + 'ssr-bundle.js.map': { size: 97403 }, 'style.css': { size: 1065 }, 'style.css.map': { size: 2250 }, } @@ -85,16 +85,16 @@ export default { 'bundle.js': { size: 19300 }, 'bundle.js.map': { size: 105590 }, 'route-home.chunk.*.js': { size: 1000 }, - 'route-home.chunk.*.js.map': { size: 4285 }, + 'route-home.chunk.*.js.map': { size: 4981 }, 'route-profile.chunk.*.js': { size: 1650 }, - 'route-profile.chunk.*.js.map': { size: 7507 }, + 'route-profile.chunk.*.js.map': { size: 8609 }, 'polyfills.js.map': { size: 31800 }, 'index.html': { size: 850 }, 'style.css': { size: 1065 }, 'style.css.map': { size: 2345 }, 'ssr-build': { 'ssr-bundle.js': { size: 19820 }, - 'ssr-bundle.js.map': { size: 95581 }, + 'ssr-bundle.js.map': { size: 101502 }, 'style.css': { size: 1065 }, 'style.css.map': { size: 2345 }, } diff --git a/tests/subjects/custom-babelrc/.babelrc b/tests/subjects/custom-babelrc/.babelrc index fa5b8e976..d30f308f0 100644 --- a/tests/subjects/custom-babelrc/.babelrc +++ b/tests/subjects/custom-babelrc/.babelrc @@ -1,6 +1,7 @@ { "plugins": [ "transform-regenerator", + ["transform-react-jsx", { "pragma": "h" }], ["transform-runtime", { "helpers": false, "polyfill": false, diff --git a/tests/subjects/custom-babelrc/index.js b/tests/subjects/custom-babelrc/index.js index 0f12696de..c1c4fc867 100644 --- a/tests/subjects/custom-babelrc/index.js +++ b/tests/subjects/custom-babelrc/index.js @@ -1,4 +1,4 @@ -import { Component } from 'preact'; +import { h, Component } from 'preact'; const delay = t => new Promise(r => setTimeout(r, t));