feat(es-dev-server): render large files in babel compact mode

This commit is contained in:
Lars den Bakker
2020-05-24 20:28:52 +02:00
parent 5cc43cae97
commit d0808b88a8
3 changed files with 13 additions and 15 deletions

View File

@@ -1,9 +1,6 @@
import { transformAsync, TransformOptions } from '@babel/core';
import deepmerge from 'deepmerge';
// string length at which babel starts deoptimizing
const BABEL_DEOPTIMIZED_LENGTH = 500000;
interface CreateBabelTransformConfig {
browserTarget: string | string[];
polyfillModules?: boolean;
@@ -51,10 +48,15 @@ export function createBabelTransform(
]);
return async function transform(filename: string, source: string) {
// babel runs out of memory when processing source maps for large files
const sourceMaps = source.length > BABEL_DEOPTIMIZED_LENGTH ? false : 'inline';
const result = await transformAsync(source, { filename, sourceMaps, ...config });
const largeFile = source.length > 100000;
const result = await transformAsync(source, {
filename,
// prevent generating pretty output for large files
compact: largeFile,
// babel runs out of memory when processing source maps andfor large files
sourceMaps: !largeFile,
...config,
});
if (!result || !result.code) {
throw new Error('Failed to transform');
}

View File

@@ -19,8 +19,7 @@ async function* asyncGenerator() {
yield 0;
await Promise.resolve();
yield 1;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4Lmh0bWwiXSwibmFtZXMiOlsibWVzc2FnZSIsImNvbnNvbGUiLCJsb2ciLCJGb28iLCJiYXIiLCJ3aW5kb3ciLCJmb28iLCJhc3luY0dlbmVyYXRvciIsIlByb21pc2UiLCJyZXNvbHZlIl0sIm1hcHBpbmdzIjoiOztBQUNJLE1BQU1BLE9BQU8sR0FBRyxLQUFoQjtBQUNBQyxPQUFPLENBQUNDLEdBQVIsQ0FBYSxtQkFBa0JGLE9BQVEsRUFBdkM7O0FBRUEsTUFBTUcsR0FBTixDQUFVOztBQUlWLE1BQU1DLEdBQUcsR0FBRyxLQUFaO0FBRUFILE9BQU8sQ0FBQ0MsR0FBUiwrQkFBWUcsTUFBWixvQ0FBWSxRQUFRQyxHQUFwQixxQkFBWSxZQUFhRixHQUF6Qiw4QkFBZ0MsR0FBaEM7O0FBRUEsZ0JBQWdCRyxjQUFoQixHQUFpQztBQUMvQixRQUFNQyxPQUFPLENBQUNDLE9BQVIsRUFBTjtBQUNBLFFBQU0sQ0FBTjtBQUNBLFFBQU1ELE9BQU8sQ0FBQ0MsT0FBUixFQUFOO0FBQ0EsUUFBTSxDQUFOO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICBjb25zdCBtZXNzYWdlID0gJ2Zvbyc7XG4gICAgY29uc29sZS5sb2coYFRoZSBtZXNzYWdlIGlzOiAke21lc3NhZ2V9YCk7XG5cbiAgICBjbGFzcyBGb28ge1xuXG4gICAgfVxuXG4gICAgY29uc3QgYmFyID0gJ2J1eic7XG5cbiAgICBjb25zb2xlLmxvZyh3aW5kb3c/LmZvbz8uYmFyID8/ICd4Jyk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiogYXN5bmNHZW5lcmF0b3IoKSB7XG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIHlpZWxkIDA7XG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIHlpZWxkIDE7XG4gICAgfVxuICAiXX0=</script>
}</script>
<script type="module">var _window$foo$bar, _window, _window$foo;
@@ -38,8 +37,7 @@ async function* asyncGenerator() {
yield 0;
await Promise.resolve();
yield 1;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4Lmh0bWwiXSwibmFtZXMiOlsibWVzc2FnZSIsImNvbnNvbGUiLCJsb2ciLCJGb28iLCJiYXIiLCJ3aW5kb3ciLCJmb28iLCJhc3luY0dlbmVyYXRvciIsIlByb21pc2UiLCJyZXNvbHZlIl0sIm1hcHBpbmdzIjoiOztBQUNJLFNBQVNBLE9BQVQsUUFBd0IsbUNBQXhCO0FBQ0EsT0FBTyx1QkFBUDtBQUVBQyxPQUFPLENBQUNDLEdBQVIsQ0FBYSxtQkFBa0JGLE9BQVEsRUFBdkM7O0FBRUEsTUFBTUcsR0FBTixDQUFVOztBQUlWLE1BQU1DLEdBQUcsR0FBRyxLQUFaO0FBRUFILE9BQU8sQ0FBQ0MsR0FBUiwrQkFBWUcsTUFBWixvQ0FBWSxRQUFRQyxHQUFwQixxQkFBWSxZQUFhRixHQUF6Qiw4QkFBZ0MsR0FBaEM7O0FBRUEsZ0JBQWdCRyxjQUFoQixHQUFpQztBQUMvQixRQUFNQyxPQUFPLENBQUNDLE9BQVIsRUFBTjtBQUNBLFFBQU0sQ0FBTjtBQUNBLFFBQU1ELE9BQU8sQ0FBQ0MsT0FBUixFQUFOO0FBQ0EsUUFBTSxDQUFOO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICBpbXBvcnQgeyBtZXNzYWdlIH0gZnJvbSAnLi9ub2RlX21vZHVsZXMvbXktbW9kdWxlL2luZGV4LmpzJztcbiAgICBpbXBvcnQgJy4vc3JjL2xvY2FsLW1vZHVsZS5qcyc7XG5cbiAgICBjb25zb2xlLmxvZyhgVGhlIG1lc3NhZ2UgaXM6ICR7bWVzc2FnZX1gKTtcblxuICAgIGNsYXNzIEZvbyB7XG5cbiAgICB9XG5cbiAgICBjb25zdCBiYXIgPSAnYnV6JztcblxuICAgIGNvbnNvbGUubG9nKHdpbmRvdz8uZm9vPy5iYXIgPz8gJ3gnKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uKiBhc3luY0dlbmVyYXRvcigpIHtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgeWllbGQgMDtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgeWllbGQgMTtcbiAgICB9XG4gICJdfQ==</script>
}</script>

View File

@@ -19,8 +19,7 @@ async function* asyncGenerator() {
yield 0;
await Promise.resolve();
yield 1;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4Lmh0bWwiXSwibmFtZXMiOlsibWVzc2FnZSIsImNvbnNvbGUiLCJsb2ciLCJGb28iLCJiYXIiLCJ3aW5kb3ciLCJmb28iLCJhc3luY0dlbmVyYXRvciIsIlByb21pc2UiLCJyZXNvbHZlIl0sIm1hcHBpbmdzIjoiOztBQUNJLE1BQU1BLE9BQU8sR0FBRyxLQUFoQjtBQUNBQyxPQUFPLENBQUNDLEdBQVIsQ0FBYSxtQkFBa0JGLE9BQVEsRUFBdkM7O0FBRUEsTUFBTUcsR0FBTixDQUFVOztBQUlWLE1BQU1DLEdBQUcsR0FBRyxLQUFaO0FBRUFILE9BQU8sQ0FBQ0MsR0FBUiwrQkFBWUcsTUFBWixvQ0FBWSxRQUFRQyxHQUFwQixxQkFBWSxZQUFhRixHQUF6Qiw4QkFBZ0MsR0FBaEM7O0FBRUEsZ0JBQWdCRyxjQUFoQixHQUFpQztBQUMvQixRQUFNQyxPQUFPLENBQUNDLE9BQVIsRUFBTjtBQUNBLFFBQU0sQ0FBTjtBQUNBLFFBQU1ELE9BQU8sQ0FBQ0MsT0FBUixFQUFOO0FBQ0EsUUFBTSxDQUFOO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICBjb25zdCBtZXNzYWdlID0gJ2Zvbyc7XG4gICAgY29uc29sZS5sb2coYFRoZSBtZXNzYWdlIGlzOiAke21lc3NhZ2V9YCk7XG5cbiAgICBjbGFzcyBGb28ge1xuXG4gICAgfVxuXG4gICAgY29uc3QgYmFyID0gJ2J1eic7XG5cbiAgICBjb25zb2xlLmxvZyh3aW5kb3c/LmZvbz8uYmFyID8/ICd4Jyk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiogYXN5bmNHZW5lcmF0b3IoKSB7XG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIHlpZWxkIDA7XG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIHlpZWxkIDE7XG4gICAgfVxuICAiXX0=</script>
}</script>
<script type="module">var _window$foo$bar, _window, _window$foo;
@@ -38,8 +37,7 @@ async function* asyncGenerator() {
yield 0;
await Promise.resolve();
yield 1;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4Lmh0bWwiXSwibmFtZXMiOlsibWVzc2FnZSIsImNvbnNvbGUiLCJsb2ciLCJGb28iLCJiYXIiLCJ3aW5kb3ciLCJmb28iLCJhc3luY0dlbmVyYXRvciIsIlByb21pc2UiLCJyZXNvbHZlIl0sIm1hcHBpbmdzIjoiOztBQUNJLFNBQVNBLE9BQVQsUUFBd0IsbUNBQXhCO0FBQ0EsT0FBTyx1QkFBUDtBQUVBQyxPQUFPLENBQUNDLEdBQVIsQ0FBYSxtQkFBa0JGLE9BQVEsRUFBdkM7O0FBRUEsTUFBTUcsR0FBTixDQUFVOztBQUlWLE1BQU1DLEdBQUcsR0FBRyxLQUFaO0FBRUFILE9BQU8sQ0FBQ0MsR0FBUiwrQkFBWUcsTUFBWixvQ0FBWSxRQUFRQyxHQUFwQixxQkFBWSxZQUFhRixHQUF6Qiw4QkFBZ0MsR0FBaEM7O0FBRUEsZ0JBQWdCRyxjQUFoQixHQUFpQztBQUMvQixRQUFNQyxPQUFPLENBQUNDLE9BQVIsRUFBTjtBQUNBLFFBQU0sQ0FBTjtBQUNBLFFBQU1ELE9BQU8sQ0FBQ0MsT0FBUixFQUFOO0FBQ0EsUUFBTSxDQUFOO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICBpbXBvcnQgeyBtZXNzYWdlIH0gZnJvbSAnLi9ub2RlX21vZHVsZXMvbXktbW9kdWxlL2luZGV4LmpzJztcbiAgICBpbXBvcnQgJy4vc3JjL2xvY2FsLW1vZHVsZS5qcyc7XG5cbiAgICBjb25zb2xlLmxvZyhgVGhlIG1lc3NhZ2UgaXM6ICR7bWVzc2FnZX1gKTtcblxuICAgIGNsYXNzIEZvbyB7XG5cbiAgICB9XG5cbiAgICBjb25zdCBiYXIgPSAnYnV6JztcblxuICAgIGNvbnNvbGUubG9nKHdpbmRvdz8uZm9vPy5iYXIgPz8gJ3gnKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uKiBhc3luY0dlbmVyYXRvcigpIHtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgeWllbGQgMDtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgeWllbGQgMTtcbiAgICB9XG4gICJdfQ==</script>
}</script>
<script type="module" src="./app.js"></script>