mirror of
https://github.com/home-assistant/frontend.git
synced 2025-06-10 12:16:35 +00:00
Use Babel runtime for helpers and regenerator (33%+ bundle reduction) (#16466)
This commit is contained in:
parent
a5ba2499c0
commit
aa3fd70966
@ -90,6 +90,8 @@ module.exports.babelOptions = ({ latestBuild, isProdBuild, isTestBuild }) => ({
|
|||||||
setSpreadProperties: true,
|
setSpreadProperties: true,
|
||||||
},
|
},
|
||||||
browserslistEnv: latestBuild ? "modern" : "legacy",
|
browserslistEnv: latestBuild ? "modern" : "legacy",
|
||||||
|
// Must be unambiguous because some dependencies are CommonJS only
|
||||||
|
sourceType: "unambiguous",
|
||||||
presets: [
|
presets: [
|
||||||
[
|
[
|
||||||
"@babel/preset-env",
|
"@babel/preset-env",
|
||||||
@ -112,8 +114,6 @@ module.exports.babelOptions = ({ latestBuild, isProdBuild, isTestBuild }) => ({
|
|||||||
ignoreModuleNotFound: true,
|
ignoreModuleNotFound: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
// Support some proposals still in TC39 process
|
|
||||||
["@babel/plugin-proposal-decorators", { decoratorsBeforeExport: true }],
|
|
||||||
// Minify template literals for production
|
// Minify template literals for production
|
||||||
isProdBuild && [
|
isProdBuild && [
|
||||||
"template-html-minifier",
|
"template-html-minifier",
|
||||||
@ -131,6 +131,13 @@ module.exports.babelOptions = ({ latestBuild, isProdBuild, isTestBuild }) => ({
|
|||||||
failOnError: true, // we can turn this off in case of false positives
|
failOnError: true, // we can turn this off in case of false positives
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
// Import helpers and regenerator from runtime package
|
||||||
|
[
|
||||||
|
"@babel/plugin-transform-runtime",
|
||||||
|
{ version: require("../package.json").dependencies["@babel/runtime"] },
|
||||||
|
],
|
||||||
|
// Support some proposals still in TC39 process
|
||||||
|
["@babel/plugin-proposal-decorators", { decoratorsBeforeExport: true }],
|
||||||
].filter(Boolean),
|
].filter(Boolean),
|
||||||
exclude: [
|
exclude: [
|
||||||
// \\ for Windows, / for Mac OS and Linux
|
// \\ for Windows, / for Mac OS and Linux
|
||||||
@ -149,27 +156,27 @@ const publicPath = (latestBuild, root = "") =>
|
|||||||
latestBuild ? `${root}/frontend_latest/` : `${root}/frontend_es5/`;
|
latestBuild ? `${root}/frontend_latest/` : `${root}/frontend_es5/`;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
BundleConfig {
|
BundleConfig {
|
||||||
// Object with entrypoints that need to be bundled
|
// Object with entrypoints that need to be bundled
|
||||||
entry: { [name: string]: pathToFile },
|
entry: { [name: string]: pathToFile },
|
||||||
// Folder where bundled files need to be written
|
// Folder where bundled files need to be written
|
||||||
outputPath: string,
|
outputPath: string,
|
||||||
// absolute url-path where bundled files can be found
|
// absolute url-path where bundled files can be found
|
||||||
publicPath: string,
|
publicPath: string,
|
||||||
// extra definitions that we need to replace in source
|
// extra definitions that we need to replace in source
|
||||||
defineOverlay: {[name: string]: value },
|
defineOverlay: {[name: string]: value },
|
||||||
// if this is a production build
|
// if this is a production build
|
||||||
isProdBuild: boolean,
|
isProdBuild: boolean,
|
||||||
// If we're targeting latest browsers
|
// If we're targeting latest browsers
|
||||||
latestBuild: boolean,
|
latestBuild: boolean,
|
||||||
// If we're doing a stats build (create nice chunk names)
|
// If we're doing a stats build (create nice chunk names)
|
||||||
isStatsBuild: boolean,
|
isStatsBuild: boolean,
|
||||||
// If it's just a test build in CI, skip time on source map generation
|
// If it's just a test build in CI, skip time on source map generation
|
||||||
isTestBuild: boolean,
|
isTestBuild: boolean,
|
||||||
// Names of entrypoints that should not be hashed
|
// Names of entrypoints that should not be hashed
|
||||||
dontHash: Set<string>
|
dontHash: Set<string>
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module.exports.config = {
|
module.exports.config = {
|
||||||
app({ isProdBuild, latestBuild, isStatsBuild, isTestBuild, isWDS }) {
|
app({ isProdBuild, latestBuild, isStatsBuild, isTestBuild, isWDS }) {
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
export {}; // for Babel to treat as a module
|
||||||
|
|
||||||
const castContext = cast.framework.CastReceiverContext.getInstance();
|
const castContext = cast.framework.CastReceiverContext.getInstance();
|
||||||
|
|
||||||
const playerManager = castContext.getPlayerManager();
|
const playerManager = castContext.getPlayerManager();
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@babel/runtime": "7.21.5",
|
||||||
"@braintree/sanitize-url": "6.0.2",
|
"@braintree/sanitize-url": "6.0.2",
|
||||||
"@codemirror/autocomplete": "6.6.1",
|
"@codemirror/autocomplete": "6.6.1",
|
||||||
"@codemirror/commands": "6.2.4",
|
"@codemirror/commands": "6.2.4",
|
||||||
@ -125,7 +126,6 @@
|
|||||||
"punycode": "2.3.0",
|
"punycode": "2.3.0",
|
||||||
"qr-scanner": "1.4.2",
|
"qr-scanner": "1.4.2",
|
||||||
"qrcode": "1.5.3",
|
"qrcode": "1.5.3",
|
||||||
"regenerator-runtime": "0.13.11",
|
|
||||||
"resize-observer-polyfill": "1.5.1",
|
"resize-observer-polyfill": "1.5.1",
|
||||||
"roboto-fontface": "0.10.0",
|
"roboto-fontface": "0.10.0",
|
||||||
"rrule": "2.7.2",
|
"rrule": "2.7.2",
|
||||||
@ -151,6 +151,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.21.8",
|
"@babel/core": "7.21.8",
|
||||||
"@babel/plugin-proposal-decorators": "7.21.0",
|
"@babel/plugin-proposal-decorators": "7.21.0",
|
||||||
|
"@babel/plugin-transform-runtime": "7.21.4",
|
||||||
"@babel/preset-env": "7.21.5",
|
"@babel/preset-env": "7.21.5",
|
||||||
"@babel/preset-typescript": "7.21.5",
|
"@babel/preset-typescript": "7.21.5",
|
||||||
"@koa/cors": "4.0.0",
|
"@koa/cors": "4.0.0",
|
||||||
@ -163,6 +164,7 @@
|
|||||||
"@rollup/plugin-json": "6.0.0",
|
"@rollup/plugin-json": "6.0.0",
|
||||||
"@rollup/plugin-node-resolve": "15.0.2",
|
"@rollup/plugin-node-resolve": "15.0.2",
|
||||||
"@rollup/plugin-replace": "5.0.2",
|
"@rollup/plugin-replace": "5.0.2",
|
||||||
|
"@types/babel__plugin-transform-runtime": "^7",
|
||||||
"@types/chromecast-caf-receiver": "5.0.12",
|
"@types/chromecast-caf-receiver": "5.0.12",
|
||||||
"@types/chromecast-caf-sender": "1.0.5",
|
"@types/chromecast-caf-sender": "1.0.5",
|
||||||
"@types/esprima": "4.0.3",
|
"@types/esprima": "4.0.3",
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
/* eslint-disable no-extend-native */
|
/* eslint-disable no-extend-native */
|
||||||
|
|
||||||
|
export {}; // for Babel to treat as a module
|
||||||
|
|
||||||
if (!Array.prototype.flat) {
|
if (!Array.prototype.flat) {
|
||||||
Object.defineProperty(Array.prototype, "flat", {
|
Object.defineProperty(Array.prototype, "flat", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// Caution before editing - For latest builds, this module is replaced with emptiness and thus not imported (see build-scripts/bundle.js)
|
// Caution before editing - For latest builds, this module is replaced with emptiness and thus not imported (see build-scripts/bundle.js)
|
||||||
import "core-js";
|
import "core-js";
|
||||||
import "regenerator-runtime/runtime";
|
|
||||||
import "lit/polyfill-support";
|
import "lit/polyfill-support";
|
||||||
|
|
||||||
// To use comlink under ES5
|
// To use comlink under ES5
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
export {}; // for Babel to treat as a module
|
||||||
|
|
||||||
const documentContainer = document.createElement("template");
|
const documentContainer = document.createElement("template");
|
||||||
documentContainer.setAttribute("style", "display: none;");
|
documentContainer.setAttribute("style", "display: none;");
|
||||||
|
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
// https://github.com/home-assistant/frontend/pull/7031
|
// https://github.com/home-assistant/frontend/pull/7031
|
||||||
|
|
||||||
|
export {}; // for Babel to treat as a module
|
||||||
|
|
||||||
const isSafari14 = /^((?!chrome|android).)*version\/14\.0\s.*safari/i.test(
|
const isSafari14 = /^((?!chrome|android).)*version\/14\.0\s.*safari/i.test(
|
||||||
navigator.userAgent
|
navigator.userAgent
|
||||||
);
|
);
|
||||||
|
@ -1 +1,3 @@
|
|||||||
/* empty file that we alias some files to that we don't want to include */
|
/* empty file that we alias some files to that we don't want to include */
|
||||||
|
|
||||||
|
export {}; // for Babel to treat as a module
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
export {}; // for Babel to treat as a module
|
@ -2,7 +2,12 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
// Language Options
|
// Language Options
|
||||||
"target": "ES2017",
|
"target": "ES2017",
|
||||||
"lib": ["ES2017", "DOM", "DOM.Iterable", "WebWorker"],
|
"lib": [
|
||||||
|
"ES2017",
|
||||||
|
"DOM",
|
||||||
|
"DOM.Iterable",
|
||||||
|
"WebWorker"
|
||||||
|
],
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
// Modules
|
// Modules
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
@ -21,6 +26,7 @@
|
|||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
// Interop with CommonJS and other tools
|
// Interop with CommonJS and other tools
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
|
"isolatedModules": true,
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
"name": "ts-lit-plugin",
|
"name": "ts-lit-plugin",
|
||||||
@ -37,4 +43,4 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
31
yarn.lock
31
yarn.lock
@ -1110,6 +1110,22 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@babel/plugin-transform-runtime@npm:7.21.4":
|
||||||
|
version: 7.21.4
|
||||||
|
resolution: "@babel/plugin-transform-runtime@npm:7.21.4"
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-module-imports": ^7.21.4
|
||||||
|
"@babel/helper-plugin-utils": ^7.20.2
|
||||||
|
babel-plugin-polyfill-corejs2: ^0.3.3
|
||||||
|
babel-plugin-polyfill-corejs3: ^0.6.0
|
||||||
|
babel-plugin-polyfill-regenerator: ^0.4.1
|
||||||
|
semver: ^6.3.0
|
||||||
|
peerDependencies:
|
||||||
|
"@babel/core": ^7.0.0-0
|
||||||
|
checksum: 7e2e6b0d6f9762fde58738829e4d3b5e13dc88ccc1463e4eee83c8d8f50238eeb8e3699923f5ad4d7edf597515f74d67fbb14eb330225075fc7733b547e22145
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@babel/plugin-transform-shorthand-properties@npm:^7.18.6":
|
"@babel/plugin-transform-shorthand-properties@npm:^7.18.6":
|
||||||
version: 7.18.6
|
version: 7.18.6
|
||||||
resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6"
|
resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6"
|
||||||
@ -1326,7 +1342,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4":
|
"@babel/runtime@npm:7.21.5, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4":
|
||||||
version: 7.21.5
|
version: 7.21.5
|
||||||
resolution: "@babel/runtime@npm:7.21.5"
|
resolution: "@babel/runtime@npm:7.21.5"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4000,6 +4016,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@types/babel__plugin-transform-runtime@npm:^7":
|
||||||
|
version: 7.9.2
|
||||||
|
resolution: "@types/babel__plugin-transform-runtime@npm:7.9.2"
|
||||||
|
checksum: 0eb18bf14b478804d34f96d47b992e53043776b8679e0c110051985a22ec18497e6f2c6d20f5289876c6094ccac2d41fa2f716a150e7512cee0a5c2ae1cf79b3
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@types/body-parser@npm:*":
|
"@types/body-parser@npm:*":
|
||||||
version: 1.19.2
|
version: 1.19.2
|
||||||
resolution: "@types/body-parser@npm:1.19.2"
|
resolution: "@types/body-parser@npm:1.19.2"
|
||||||
@ -9427,8 +9450,10 @@ __metadata:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core": 7.21.8
|
"@babel/core": 7.21.8
|
||||||
"@babel/plugin-proposal-decorators": 7.21.0
|
"@babel/plugin-proposal-decorators": 7.21.0
|
||||||
|
"@babel/plugin-transform-runtime": 7.21.4
|
||||||
"@babel/preset-env": 7.21.5
|
"@babel/preset-env": 7.21.5
|
||||||
"@babel/preset-typescript": 7.21.5
|
"@babel/preset-typescript": 7.21.5
|
||||||
|
"@babel/runtime": 7.21.5
|
||||||
"@braintree/sanitize-url": 6.0.2
|
"@braintree/sanitize-url": 6.0.2
|
||||||
"@codemirror/autocomplete": 6.6.1
|
"@codemirror/autocomplete": 6.6.1
|
||||||
"@codemirror/commands": 6.2.4
|
"@codemirror/commands": 6.2.4
|
||||||
@ -9505,6 +9530,7 @@ __metadata:
|
|||||||
"@rollup/plugin-node-resolve": 15.0.2
|
"@rollup/plugin-node-resolve": 15.0.2
|
||||||
"@rollup/plugin-replace": 5.0.2
|
"@rollup/plugin-replace": 5.0.2
|
||||||
"@thomasloven/round-slider": 0.6.0
|
"@thomasloven/round-slider": 0.6.0
|
||||||
|
"@types/babel__plugin-transform-runtime": ^7
|
||||||
"@types/chromecast-caf-receiver": 5.0.12
|
"@types/chromecast-caf-receiver": 5.0.12
|
||||||
"@types/chromecast-caf-sender": 1.0.5
|
"@types/chromecast-caf-sender": 1.0.5
|
||||||
"@types/esprima": 4.0.3
|
"@types/esprima": 4.0.3
|
||||||
@ -9598,7 +9624,6 @@ __metadata:
|
|||||||
punycode: 2.3.0
|
punycode: 2.3.0
|
||||||
qr-scanner: 1.4.2
|
qr-scanner: 1.4.2
|
||||||
qrcode: 1.5.3
|
qrcode: 1.5.3
|
||||||
regenerator-runtime: 0.13.11
|
|
||||||
resize-observer-polyfill: 1.5.1
|
resize-observer-polyfill: 1.5.1
|
||||||
roboto-fontface: 0.10.0
|
roboto-fontface: 0.10.0
|
||||||
rollup: 2.79.1
|
rollup: 2.79.1
|
||||||
@ -13370,7 +13395,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"regenerator-runtime@npm:0.13.11, regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.3":
|
"regenerator-runtime@npm:^0.13.11, regenerator-runtime@npm:^0.13.3":
|
||||||
version: 0.13.11
|
version: 0.13.11
|
||||||
resolution: "regenerator-runtime@npm:0.13.11"
|
resolution: "regenerator-runtime@npm:0.13.11"
|
||||||
checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4
|
checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user