Skip to content

Commit b2f98fb

Browse files
committed
perf: use @babel/standalone + lazy load
1 parent 7734105 commit b2f98fb

File tree

3 files changed

+34
-691
lines changed

3 files changed

+34
-691
lines changed

packages/plugin-legacy/index.js

+12-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
// @ts-check
22
const path = require('path')
3-
const babel = require('@babel/core')
4-
const presetEnv = require('@babel/preset-env')
53
const { build } = require('vite')
64

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+
712
// https://gist.github.com/samthor/64b114e4a4f539915a95b91ffd340acc
813
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()}}();`
914

@@ -177,18 +182,19 @@ function viteLegacyPlugin(options = {}) {
177182

178183
// transform the legacy chunk with @babel/preset-env
179184
const sourceMaps = !!config.build.sourcemap
180-
let { code, ast, map } = babel.transformSync(raw, {
185+
let { code, ast, map } = loadBabel().transform(raw, {
181186
ast: true,
182187
configFile: false,
183188
sourceMaps,
184189
inputSourceMap: sourceMaps && chunk.map,
185190
presets: [
186191
[
187-
presetEnv,
192+
'env',
188193
{
189194
targets,
190195
modules: false,
191196
bugfixes: true,
197+
loose: true,
192198
useBuiltIns: needPolyfills ? 'usage' : false,
193199
corejs: needPolyfills
194200
? { version: 3, proposals: false }
@@ -324,12 +330,12 @@ function viteLegacyPlugin(options = {}) {
324330
* @param {Set<string>} list
325331
*/
326332
function detectPolyfills(code, targets, list) {
327-
const { ast } = babel.transformSync(code, {
333+
const { ast } = loadBabel().transform(code, {
328334
ast: true,
329335
configFile: false,
330336
presets: [
331337
[
332-
presetEnv,
338+
'env',
333339
{
334340
targets,
335341
modules: false,

packages/plugin-legacy/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@
2424
},
2525
"homepage": "https://github.com/vitejs/vite/tree/main/packages/plugin-legacy#readme",
2626
"dependencies": {
27-
"@babel/core": "^7.12.10",
28-
"@babel/preset-env": "^7.12.11",
27+
"@babel/standalone": "^7.12.12",
2928
"core-js": "^3.8.2",
3029
"regenerator-runtime": "^0.13.7",
3130
"systemjs": "^6.8.3"

0 commit comments

Comments
 (0)