|
1 | 1 | // @ts-check
|
2 | 2 | const path = require('path')
|
3 |
| -const babel = require('@babel/core') |
4 |
| -const presetEnv = require('@babel/preset-env') |
5 | 3 | const { build } = require('vite')
|
6 | 4 |
|
| 5 | +// lazy load babel since it's not used during dev |
| 6 | +let babel |
| 7 | +/** |
| 8 | + * @return {import('@babel/standalone')} |
| 9 | + */ |
| 10 | +const loadBabel = () => babel || (babel = require('@babel/standalone')) |
| 11 | + |
7 | 12 | // https://gist.github.com/samthor/64b114e4a4f539915a95b91ffd340acc
|
8 | 13 | const safari10NoModuleFix = `!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();`
|
9 | 14 |
|
@@ -177,18 +182,19 @@ function viteLegacyPlugin(options = {}) {
|
177 | 182 |
|
178 | 183 | // transform the legacy chunk with @babel/preset-env
|
179 | 184 | const sourceMaps = !!config.build.sourcemap
|
180 |
| - let { code, ast, map } = babel.transformSync(raw, { |
| 185 | + let { code, ast, map } = loadBabel().transform(raw, { |
181 | 186 | ast: true,
|
182 | 187 | configFile: false,
|
183 | 188 | sourceMaps,
|
184 | 189 | inputSourceMap: sourceMaps && chunk.map,
|
185 | 190 | presets: [
|
186 | 191 | [
|
187 |
| - presetEnv, |
| 192 | + 'env', |
188 | 193 | {
|
189 | 194 | targets,
|
190 | 195 | modules: false,
|
191 | 196 | bugfixes: true,
|
| 197 | + loose: true, |
192 | 198 | useBuiltIns: needPolyfills ? 'usage' : false,
|
193 | 199 | corejs: needPolyfills
|
194 | 200 | ? { version: 3, proposals: false }
|
@@ -324,12 +330,12 @@ function viteLegacyPlugin(options = {}) {
|
324 | 330 | * @param {Set<string>} list
|
325 | 331 | */
|
326 | 332 | function detectPolyfills(code, targets, list) {
|
327 |
| - const { ast } = babel.transformSync(code, { |
| 333 | + const { ast } = loadBabel().transform(code, { |
328 | 334 | ast: true,
|
329 | 335 | configFile: false,
|
330 | 336 | presets: [
|
331 | 337 | [
|
332 |
| - presetEnv, |
| 338 | + 'env', |
333 | 339 | {
|
334 | 340 | targets,
|
335 | 341 | modules: false,
|
|
0 commit comments