mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-27 11:16:35 +00:00
Minify HTML and CSS template literals (#15624)
This commit is contained in:
parent
67d064db28
commit
17e6e132d1
@ -53,13 +53,23 @@ module.exports.definedVars = ({ isProdBuild, latestBuild, defineOverlay }) => ({
|
|||||||
...defineOverlay,
|
...defineOverlay,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
module.exports.htmlMinifierOptions = {
|
||||||
|
caseSensitive: true,
|
||||||
|
collapseWhitespace: true,
|
||||||
|
conservativeCollapse: true,
|
||||||
|
decodeEntities: true,
|
||||||
|
removeComments: true,
|
||||||
|
removeRedundantAttributes: true,
|
||||||
|
minifyCSS: true,
|
||||||
|
};
|
||||||
|
|
||||||
module.exports.terserOptions = (latestBuild) => ({
|
module.exports.terserOptions = (latestBuild) => ({
|
||||||
safari10: !latestBuild,
|
safari10: !latestBuild,
|
||||||
ecma: latestBuild ? undefined : 5,
|
ecma: latestBuild ? undefined : 5,
|
||||||
output: { comments: false },
|
output: { comments: false },
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports.babelOptions = ({ latestBuild }) => ({
|
module.exports.babelOptions = ({ latestBuild, isProdBuild }) => ({
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
compact: false,
|
compact: false,
|
||||||
presets: [
|
presets: [
|
||||||
@ -93,12 +103,26 @@ module.exports.babelOptions = ({ latestBuild }) => ({
|
|||||||
"@babel/plugin-syntax-import-meta",
|
"@babel/plugin-syntax-import-meta",
|
||||||
"@babel/plugin-syntax-dynamic-import",
|
"@babel/plugin-syntax-dynamic-import",
|
||||||
"@babel/plugin-syntax-top-level-await",
|
"@babel/plugin-syntax-top-level-await",
|
||||||
|
// Support various proposals
|
||||||
"@babel/plugin-proposal-optional-chaining",
|
"@babel/plugin-proposal-optional-chaining",
|
||||||
"@babel/plugin-proposal-nullish-coalescing-operator",
|
"@babel/plugin-proposal-nullish-coalescing-operator",
|
||||||
["@babel/plugin-proposal-decorators", { decoratorsBeforeExport: true }],
|
["@babel/plugin-proposal-decorators", { decoratorsBeforeExport: true }],
|
||||||
["@babel/plugin-proposal-private-methods", { loose: true }],
|
["@babel/plugin-proposal-private-methods", { loose: true }],
|
||||||
["@babel/plugin-proposal-private-property-in-object", { loose: true }],
|
["@babel/plugin-proposal-private-property-in-object", { loose: true }],
|
||||||
["@babel/plugin-proposal-class-properties", { loose: true }],
|
["@babel/plugin-proposal-class-properties", { loose: true }],
|
||||||
|
// Minify template literals for production
|
||||||
|
isProdBuild && [
|
||||||
|
"template-html-minifier",
|
||||||
|
{
|
||||||
|
modules: {
|
||||||
|
lit: ["html", "svg", { name: "css", encapsulation: "style" }],
|
||||||
|
"@polymer/polymer/lib/utils/html-tag": ["html"],
|
||||||
|
},
|
||||||
|
strictCSS: true,
|
||||||
|
htmlMinifier: module.exports.htmlMinifierOptions,
|
||||||
|
failOnError: true, // we can turn this off in case of false positives
|
||||||
|
},
|
||||||
|
],
|
||||||
].filter(Boolean),
|
].filter(Boolean),
|
||||||
exclude: [
|
exclude: [
|
||||||
// \\ for Windows, / for Mac OS and Linux
|
// \\ for Windows, / for Mac OS and Linux
|
||||||
|
@ -54,7 +54,7 @@ const createRollupConfig = ({
|
|||||||
commonjs(),
|
commonjs(),
|
||||||
json(),
|
json(),
|
||||||
babel({
|
babel({
|
||||||
...bundle.babelOptions({ latestBuild }),
|
...bundle.babelOptions({ latestBuild, isProdBuild }),
|
||||||
extensions,
|
extensions,
|
||||||
babelHelpers: isWDS ? "inline" : "bundled",
|
babelHelpers: isWDS ? "inline" : "bundled",
|
||||||
}),
|
}),
|
||||||
|
@ -51,7 +51,7 @@ const createWebpackConfig = ({
|
|||||||
use: {
|
use: {
|
||||||
loader: "babel-loader",
|
loader: "babel-loader",
|
||||||
options: {
|
options: {
|
||||||
...bundle.babelOptions({ latestBuild }),
|
...bundle.babelOptions({ latestBuild, isProdBuild }),
|
||||||
cacheDirectory: !isProdBuild,
|
cacheDirectory: !isProdBuild,
|
||||||
cacheCompression: false,
|
cacheCompression: false,
|
||||||
},
|
},
|
||||||
|
@ -186,6 +186,7 @@
|
|||||||
"@web/dev-server": "^0.1.35",
|
"@web/dev-server": "^0.1.35",
|
||||||
"@web/dev-server-rollup": "^0.2.11",
|
"@web/dev-server-rollup": "^0.2.11",
|
||||||
"babel-loader": "^9.1.2",
|
"babel-loader": "^9.1.2",
|
||||||
|
"babel-plugin-template-html-minifier": "^4.1.0",
|
||||||
"chai": "^4.3.7",
|
"chai": "^4.3.7",
|
||||||
"del": "^7.0.0",
|
"del": "^7.0.0",
|
||||||
"eslint": "^8.35.0",
|
"eslint": "^8.35.0",
|
||||||
|
107
yarn.lock
107
yarn.lock
@ -6007,6 +6007,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"babel-plugin-template-html-minifier@npm:^4.1.0":
|
||||||
|
version: 4.1.0
|
||||||
|
resolution: "babel-plugin-template-html-minifier@npm:4.1.0"
|
||||||
|
dependencies:
|
||||||
|
clean-css: ^4.2.1
|
||||||
|
html-minifier-terser: ^5.0.0
|
||||||
|
is-builtin-module: ^3.0.0
|
||||||
|
checksum: 85102c9cc1f5026cde52549a79bbb595aaed6316fd990b3b353315bd6ecf0e685b341bf757f8f339abc09fbed0e424b93d0099c33d85628848572168b8cb76bf
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"bach@npm:^1.0.0":
|
"bach@npm:^1.0.0":
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
resolution: "bach@npm:1.2.0"
|
resolution: "bach@npm:1.2.0"
|
||||||
@ -6364,6 +6375,16 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"camel-case@npm:^4.1.1":
|
||||||
|
version: 4.1.2
|
||||||
|
resolution: "camel-case@npm:4.1.2"
|
||||||
|
dependencies:
|
||||||
|
pascal-case: ^3.1.2
|
||||||
|
tslib: ^2.0.3
|
||||||
|
checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"camelcase@npm:^3.0.0":
|
"camelcase@npm:^3.0.0":
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
resolution: "camelcase@npm:3.0.0"
|
resolution: "camelcase@npm:3.0.0"
|
||||||
@ -6537,12 +6558,12 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"clean-css@npm:^4.2.1":
|
"clean-css@npm:^4.2.1, clean-css@npm:^4.2.3":
|
||||||
version: 4.2.3
|
version: 4.2.4
|
||||||
resolution: "clean-css@npm:4.2.3"
|
resolution: "clean-css@npm:4.2.4"
|
||||||
dependencies:
|
dependencies:
|
||||||
source-map: ~0.6.0
|
source-map: ~0.6.0
|
||||||
checksum: 613129973a038b8bb13e3975ad6b679feccb8c98f2a9d03e6bec9e60291ef1e6b5037ee8cb09a3470751adc52f43782b1dcb4cb049360230b48062d6e3314072
|
checksum: 045ff6fcf4b5c76a084b24e1633e0c78a13b24080338fc8544565a9751559aa32ff4ee5886d9e52c18a644a6ff119bd8e37bc58e574377c05382a1fb7dbe39f8
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -6823,6 +6844,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"commander@npm:^4.1.1":
|
||||||
|
version: 4.1.1
|
||||||
|
resolution: "commander@npm:4.1.1"
|
||||||
|
checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"commander@npm:^9.4.1":
|
"commander@npm:^9.4.1":
|
||||||
version: 9.5.0
|
version: 9.5.0
|
||||||
resolution: "commander@npm:9.5.0"
|
resolution: "commander@npm:9.5.0"
|
||||||
@ -7497,6 +7525,16 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"dot-case@npm:^3.0.4":
|
||||||
|
version: 3.0.4
|
||||||
|
resolution: "dot-case@npm:3.0.4"
|
||||||
|
dependencies:
|
||||||
|
no-case: ^3.0.4
|
||||||
|
tslib: ^2.0.3
|
||||||
|
checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"duplexify@npm:^3.6.0":
|
"duplexify@npm:^3.6.0":
|
||||||
version: 3.7.1
|
version: 3.7.1
|
||||||
resolution: "duplexify@npm:3.7.1"
|
resolution: "duplexify@npm:3.7.1"
|
||||||
@ -9623,6 +9661,7 @@ fsevents@~2.3.2:
|
|||||||
"@webcomponents/webcomponentsjs": ^2.7.0
|
"@webcomponents/webcomponentsjs": ^2.7.0
|
||||||
app-datepicker: ^5.1.0
|
app-datepicker: ^5.1.0
|
||||||
babel-loader: ^9.1.2
|
babel-loader: ^9.1.2
|
||||||
|
babel-plugin-template-html-minifier: ^4.1.0
|
||||||
chai: ^4.3.7
|
chai: ^4.3.7
|
||||||
chart.js: ^3.3.2
|
chart.js: ^3.3.2
|
||||||
comlink: ^4.4.1
|
comlink: ^4.4.1
|
||||||
@ -9774,6 +9813,23 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"html-minifier-terser@npm:^5.0.0":
|
||||||
|
version: 5.1.1
|
||||||
|
resolution: "html-minifier-terser@npm:5.1.1"
|
||||||
|
dependencies:
|
||||||
|
camel-case: ^4.1.1
|
||||||
|
clean-css: ^4.2.3
|
||||||
|
commander: ^4.1.1
|
||||||
|
he: ^1.2.0
|
||||||
|
param-case: ^3.0.3
|
||||||
|
relateurl: ^0.2.7
|
||||||
|
terser: ^4.6.3
|
||||||
|
bin:
|
||||||
|
html-minifier-terser: cli.js
|
||||||
|
checksum: 75ff3ff886631b9ecb3035acb8e7dd98c599bb4d4618ad6f7e487ee9752987dddcf6848dc3c1ab1d7fc1ad4484337c2ce39c19eac17b0342b4b15e4294c8a904
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"html-minifier@npm:^4.0.0":
|
"html-minifier@npm:^4.0.0":
|
||||||
version: 4.0.0
|
version: 4.0.0
|
||||||
resolution: "html-minifier@npm:4.0.0"
|
resolution: "html-minifier@npm:4.0.0"
|
||||||
@ -10286,7 +10342,7 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"is-builtin-module@npm:^3.1.0":
|
"is-builtin-module@npm:^3.0.0, is-builtin-module@npm:^3.1.0":
|
||||||
version: 3.2.1
|
version: 3.2.1
|
||||||
resolution: "is-builtin-module@npm:3.2.1"
|
resolution: "is-builtin-module@npm:3.2.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -11561,6 +11617,15 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"lower-case@npm:^2.0.2":
|
||||||
|
version: 2.0.2
|
||||||
|
resolution: "lower-case@npm:2.0.2"
|
||||||
|
dependencies:
|
||||||
|
tslib: ^2.0.3
|
||||||
|
checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"lru-cache@npm:^4.0.1":
|
"lru-cache@npm:^4.0.1":
|
||||||
version: 4.1.5
|
version: 4.1.5
|
||||||
resolution: "lru-cache@npm:4.1.5"
|
resolution: "lru-cache@npm:4.1.5"
|
||||||
@ -12227,6 +12292,16 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"no-case@npm:^3.0.4":
|
||||||
|
version: 3.0.4
|
||||||
|
resolution: "no-case@npm:3.0.4"
|
||||||
|
dependencies:
|
||||||
|
lower-case: ^2.0.2
|
||||||
|
tslib: ^2.0.3
|
||||||
|
checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"node-fetch@npm:^2.6.7":
|
"node-fetch@npm:^2.6.7":
|
||||||
version: 2.6.7
|
version: 2.6.7
|
||||||
resolution: "node-fetch@npm:2.6.7"
|
resolution: "node-fetch@npm:2.6.7"
|
||||||
@ -12814,6 +12889,16 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"param-case@npm:^3.0.3":
|
||||||
|
version: 3.0.4
|
||||||
|
resolution: "param-case@npm:3.0.4"
|
||||||
|
dependencies:
|
||||||
|
dot-case: ^3.0.4
|
||||||
|
tslib: ^2.0.3
|
||||||
|
checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"parent-module@npm:^1.0.0":
|
"parent-module@npm:^1.0.0":
|
||||||
version: 1.0.1
|
version: 1.0.1
|
||||||
resolution: "parent-module@npm:1.0.1"
|
resolution: "parent-module@npm:1.0.1"
|
||||||
@ -12932,6 +13017,16 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"pascal-case@npm:^3.1.2":
|
||||||
|
version: 3.1.2
|
||||||
|
resolution: "pascal-case@npm:3.1.2"
|
||||||
|
dependencies:
|
||||||
|
no-case: ^3.0.4
|
||||||
|
tslib: ^2.0.3
|
||||||
|
checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"pascalcase@npm:^0.1.1":
|
"pascalcase@npm:^0.1.1":
|
||||||
version: 0.1.1
|
version: 0.1.1
|
||||||
resolution: "pascalcase@npm:0.1.1"
|
resolution: "pascalcase@npm:0.1.1"
|
||||||
@ -15168,7 +15263,7 @@ fsevents@~2.3.2:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"terser@npm:^4.6.2":
|
"terser@npm:^4.6.2, terser@npm:^4.6.3":
|
||||||
version: 4.8.1
|
version: 4.8.1
|
||||||
resolution: "terser@npm:4.8.1"
|
resolution: "terser@npm:4.8.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user