Skip to content

Commit

Permalink
refactor: Revising the babel setup
Browse files Browse the repository at this point in the history
  • Loading branch information
rschristian committed Feb 9, 2022
1 parent 808c99b commit ed69b34
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 68 deletions.
13 changes: 4 additions & 9 deletions packages/cli/babel/index.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
var isProd = (process.env.BABEL_ENV || process.env.NODE_ENV) === 'production';
/**
* test env detection is used to default mode for
* preset-env modules to "commonjs" otherwise, testing framework
* will struggle
*/
var isTest = (process.env.BABEL_ENV || process.env.NODE_ENV) === 'test';

// default supported browsers for prod nomodule bundles:
var defaultBrowserList = ['> 0.25%', 'IE >= 9'];

// default supported browsers for all dev bundles (module/nomodule is not used):
// see https://github.com/babel/babel/blob/master/packages/babel-compat-data/data/native-modules.json
var defaultBrowserListDev = [
Expand All @@ -21,10 +17,9 @@ var defaultBrowserListDev = [
'ios_saf >= 10.3',
'edge >= 16',
'opera >= 48',
'samsung >= 8.2'
'samsung >= 8.2',
];

// preact-cli babel configs
var babelConfigs = require('../lib/lib/babel-config');

/**
Expand All @@ -34,9 +29,9 @@ var babelConfigs = require('../lib/lib/babel-config');
module.exports = function preactCli(ctx, userOptions = {}) {
// set default configs based on user environment
var presetOptions = {
env: isProd ? 'production' : 'development',
env: 'development',
modules: isTest ? 'commonjs' : false,
browsers: isProd ? defaultBrowserList : defaultBrowserListDev,
browsers: defaultBrowserListDev,
};

// user specified options always the strongest
Expand All @@ -46,7 +41,7 @@ module.exports = function preactCli(ctx, userOptions = {}) {

// yay! return the configs
return babelConfigs(
{ env: { production: presetOptions.env === 'production' } },
{ env: { production: false } },
{ modules: presetOptions.modules, browsers: presetOptions.browsers }
);
};
9 changes: 3 additions & 6 deletions packages/cli/lib/lib/babel-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module.exports = function (env, options = {}) {

return {
presets: [
[
!isProd && [
require.resolve('@babel/preset-env'),
{
bugfixes: true,
Expand All @@ -14,13 +14,10 @@ module.exports = function (env, options = {}) {
exclude: ['transform-regenerator'],
},
],
],
].filter(Boolean),
plugins: [
require.resolve('@babel/plugin-syntax-dynamic-import'),
require.resolve('@babel/plugin-transform-object-assign'),
!isProd && require.resolve('@babel/plugin-transform-object-assign'),
[require.resolve('@babel/plugin-proposal-decorators'), { legacy: true }],
require.resolve('@babel/plugin-proposal-class-properties'),
require.resolve('@babel/plugin-proposal-object-rest-spread'),
isProd &&
require.resolve('babel-plugin-transform-react-remove-prop-types'),
require.resolve('babel-plugin-macros'),
Expand Down
56 changes: 24 additions & 32 deletions packages/cli/lib/lib/webpack/webpack-base-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,12 @@ module.exports = function createBaseConfig(env) {
let babelrc = readJson(resolve(cwd, babelConfigFile)) || {};

// use browserslist config environment, config default, or default browsers
// default browsers are > 0.25% global market share or Internet Explorer >= 9
const browserslistDefaults = ['> 0.25%', 'IE >= 9'];
// default browsers are '> 0.5%, last 2 versions, Firefox ESR, not dead'
const browserlistConfig = Object(browserslist.findConfig(cwd));
const browsers =
(isProd ? browserlistConfig.production : browserlistConfig.development) ||
browserlistConfig.defaults ||
browserslistDefaults;
'defaults';

let userNodeModules = findAllNodeModules(cwd);
let cliNodeModules = findAllNodeModules(__dirname);
Expand Down Expand Up @@ -308,36 +307,29 @@ module.exports = function createBaseConfig(env) {
summary: false,
clear: true,
}),
...(tsconfig
? [
new ForkTsCheckerWebpackPlugin({
typescript: {
configFile: tsconfig,
diagnosticOptions: {
syntactic: true,
},
},
}),
]
: []),
...(isProd
? [
new webpack.LoaderOptionsPlugin({ minimize: true }),
new webpack.optimize.ModuleConcatenationPlugin(),
tsconfig &&
new ForkTsCheckerWebpackPlugin({
typescript: {
configFile: tsconfig,
diagnosticOptions: {
syntactic: true,
},
},
}),
isProd && new webpack.LoaderOptionsPlugin({ minimize: true }),
new webpack.optimize.ModuleConcatenationPlugin(),

// strip out babel-helper invariant checks
new ReplacePlugin({
include: /babel-helper$/,
patterns: [
{
regex: /throw\s+(new\s+)?(Type|Reference)?Error\s*\(/g,
value: s => `return;${Array(s.length - 7).join(' ')}(`,
},
],
}),
]
: []),
],
// strip out babel-helper invariant checks
new ReplacePlugin({
include: /babel-helper$/,
patterns: [
{
regex: /throw\s+(new\s+)?(Type|Reference)?Error\s*\(/g,
value: s => `return;${Array(s.length - 7).join(' ')}(`,
},
],
}),
].filter(Boolean),

optimization: {
...(isProd && { moduleIds: 'deterministic' }),
Expand Down
3 changes: 0 additions & 3 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,7 @@
},
"dependencies": {
"@babel/core": "^7.13.16",
"@babel/plugin-proposal-class-properties": "^7.13.0",
"@babel/plugin-proposal-decorators": "^7.13.15",
"@babel/plugin-proposal-object-rest-spread": "^7.13.8",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-transform-object-assign": "^7.12.13",
"@babel/plugin-transform-react-jsx": "^7.13.12",
"@babel/preset-env": "^7.13.15",
Expand Down
30 changes: 15 additions & 15 deletions packages/cli/tests/images/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@ exports.default = {

'ssr-build/ssr-bundle.77c49.css': 1281,
'ssr-build/ssr-bundle.77c49.css.map': 2070,
'ssr-build/ssr-bundle.js': 11090,
'ssr-build/ssr-bundle.js': 9801,
'ssr-build/ssr-bundle.js.map': 30625,

'bundle.b891a.js': 21323,
'bundle.b891a.js.map': 85534,
'bundle.b891a.legacy.js': 22514,
'bundle.b891a.legacy.js.map': 106422,
'bundle.6d2a5.js': 21323,
'bundle.6d2a5.js.map': 85534,
'bundle.6d2a5.legacy.js': 22514,
'bundle.6d2a5.legacy.js.map': 106422,
'bundle.9bde9.css': 945,
'bundle.9bde9.css.map': 1758,

'dom-polyfills.b1d0e.legacy.js': 14068,
'dom-polyfills.b1d0e.legacy.js.map': 24195,
'dom-polyfills.ed461.legacy.js': 13338,
'dom-polyfills.ed461.legacy.js.map': 24195,
'es-polyfills.legacy.js': 42540,

'favicon.ico': 15086,
Expand All @@ -29,17 +29,17 @@ exports.default = {
'preact_prerender_data.json': 11,
'push-manifest.json': 450,

'route-home.chunk.cbec8.js': 326,
'route-home.chunk.cbec8.js.map': 1615,
'route-home.chunk.cbec8.legacy.js': 363,
'route-home.chunk.cbec8.legacy.js.map': 1913,
'route-home.chunk.25907.js': 306,
'route-home.chunk.25907.js.map': 1615,
'route-home.chunk.25907.legacy.js': 363,
'route-home.chunk.25907.legacy.js.map': 1913,
'route-home.chunk.f1c94.css': 112,
'route-home.chunk.f1c94.css.map': 224,

'route-profile.chunk.5cd6c.js': 3517,
'route-profile.chunk.5cd6c.js.map': 13159,
'route-profile.chunk.5cd6c.legacy.js': 3561,
'route-profile.chunk.5cd6c.legacy.js.map': 16479,
'route-profile.chunk.d1e1a.js': 2469,
'route-profile.chunk.d1e1a.js.map': 9736,
'route-profile.chunk.d1e1a.legacy.js': 2624,
'route-profile.chunk.d1e1a.legacy.js.map': 12373,
'route-profile.chunk.e0d39.css': 118,
'route-profile.chunk.e0d39.css.map': 231,
};
Expand Down
3 changes: 2 additions & 1 deletion packages/cli/tests/lib/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ function linkPackage(name, from, to) {
symlink(join(from, 'node_modules', name), join(to, 'node_modules', name));
}

// Removes optimize-plugin unless the test needs it.
// Disables the slow portions of `optimize-plugin` for
// the tests that don't rely on its functionality.
async function handleOptimize(cwd, options) {
if (!options || !options.optimize) {
const configFile = `${cwd}/preact.config.js`;
Expand Down
4 changes: 3 additions & 1 deletion packages/cli/tests/lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,9 @@ const disableOptimize = `
const optimizePlugin = helpers.getPluginsByName(config, 'OptimizePlugin')[0];
if (optimizePlugin) {
config.plugins.splice(optimizePlugin.index, 1);
const { plugin } = optimizePlugin;
plugin.options.downlevel = false;
plugin.options.minify = false;
}
`;

Expand Down
2 changes: 1 addition & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@
"@babel/helper-plugin-utils" "^7.13.0"
"@babel/plugin-syntax-numeric-separator" "^7.10.4"

"@babel/plugin-proposal-object-rest-spread@^7.13.8", "@babel/plugin-proposal-object-rest-spread@^7.14.2":
"@babel/plugin-proposal-object-rest-spread@^7.14.2":
version "7.14.2"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz#e17d418f81cc103fedd4ce037e181c8056225abc"
integrity sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw==
Expand Down

0 comments on commit ed69b34

Please sign in to comment.