From b3beb7ef85a8d54dcce4616f967438f3d65fb376 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 6 Apr 2020 13:29:52 -0700 Subject: [PATCH] Fix dynamic import in gallery (#5472) --- build-scripts/gulp/entry-html.js | 2 +- build-scripts/gulp/webpack.js | 5 +- build-scripts/webpack.js | 3 - gallery/src/components/demo-card.js | 7 ++ .../src/demos/demo-hui-media-control-card.ts | 1 - gallery/webpack.config.js | 67 ----------- package.json | 2 +- yarn.lock | 105 +++++++++--------- 8 files changed, 61 insertions(+), 131 deletions(-) diff --git a/build-scripts/gulp/entry-html.js b/build-scripts/gulp/entry-html.js index e8ad05e8b4..5ad758e807 100644 --- a/build-scripts/gulp/entry-html.js +++ b/build-scripts/gulp/entry-html.js @@ -222,7 +222,7 @@ gulp.task("gen-index-gallery-dev", (done) => { // In dev mode we don't mangle names, so we hardcode urls. That way we can // run webpack as last in watch mode, which blocks output. const content = renderGalleryTemplate("index", { - latestGalleryJS: "./entrypoint.js", + latestGalleryJS: "./frontend_latest/entrypoint.js", }); fs.outputFileSync(path.resolve(config.gallery_root, "index.html"), content); diff --git a/build-scripts/gulp/webpack.js b/build-scripts/gulp/webpack.js index f6769a8c83..ed07ea7f3c 100644 --- a/build-scripts/gulp/webpack.js +++ b/build-scripts/gulp/webpack.js @@ -150,9 +150,8 @@ gulp.task( gulp.task("webpack-dev-server-gallery", () => { runDevServer({ - compiler: webpack( - createGalleryConfig({ latestBuild: true, isProdBuild: false }) - ), + // We don't use the es5 build, but the dev server will fuck up the publicPath if we don't + compiler: webpack(bothBuilds(createGalleryConfig, { isProdBuild: false })), contentBase: paths.gallery_root, port: 8100, }); diff --git a/build-scripts/webpack.js b/build-scripts/webpack.js index 7e86af6e39..07894ad874 100644 --- a/build-scripts/webpack.js +++ b/build-scripts/webpack.js @@ -245,9 +245,6 @@ const createHassioConfig = ({ isProdBuild, latestBuild }) => { }; const createGalleryConfig = ({ isProdBuild, latestBuild }) => { - if (!latestBuild) { - throw new Error("Gallery only supports latest build!"); - } const config = createWebpackConfig({ entry: { entrypoint: path.resolve(paths.gallery_dir, "src/entrypoint.js"), diff --git a/gallery/src/components/demo-card.js b/gallery/src/components/demo-card.js index 921030dee3..c5b7846f39 100644 --- a/gallery/src/components/demo-card.js +++ b/gallery/src/components/demo-card.js @@ -57,6 +57,13 @@ class DemoCard extends PolymerElement { }; } + ready() { + super.ready(); + this.addEventListener("ll-rebuild", () => { + this._configChanged(this.config); + }); + } + _configChanged(config) { const card = this.$.card; while (card.lastChild) { diff --git a/gallery/src/demos/demo-hui-media-control-card.ts b/gallery/src/demos/demo-hui-media-control-card.ts index aca2612dd5..f79284a13f 100644 --- a/gallery/src/demos/demo-hui-media-control-card.ts +++ b/gallery/src/demos/demo-hui-media-control-card.ts @@ -4,7 +4,6 @@ import { PolymerElement } from "@polymer/polymer/polymer-element"; import { provideHass } from "../../../src/fake_data/provide_hass"; import "../components/demo-cards"; import { createMediaPlayerEntities } from "../data/media_players"; -import "../../../src/panels/lovelace/cards/hui-media-control-card"; const CONFIGS = [ { diff --git a/gallery/webpack.config.js b/gallery/webpack.config.js index 9bc82eedc3..e69d751185 100644 --- a/gallery/webpack.config.js +++ b/gallery/webpack.config.js @@ -1,72 +1,5 @@ -const path = require("path"); -const CopyWebpackPlugin = require("copy-webpack-plugin"); const { createGalleryConfig } = require("../build-scripts/webpack.js"); -const { babelLoaderConfig } = require("../build-scripts/babel.js"); - -const isProd = process.env.NODE_ENV === "production"; -const chunkFilename = isProd ? "chunk.[chunkhash].js" : "[name].chunk.js"; -const buildPath = path.resolve(__dirname, "dist"); -const publicPath = isProd ? "./" : "http://localhost:8080/"; -const latestBuild = true; module.exports = createGalleryConfig({ latestBuild: true, }); - -const bla = () => { - const oldExports = { - mode: isProd ? "production" : "development", - // Disabled in prod while we make Home Assistant able to serve the right files. - // Was source-map - devtool: isProd ? "none" : "inline-source-map", - entry: "./src/entrypoint.js", - module: { - rules: [ - babelLoaderConfig({ latestBuild }), - { - test: /\.css$/, - use: "raw-loader", - }, - { - test: /\.(html)$/, - use: { - loader: "html-loader", - options: { - exportAsEs6Default: true, - }, - }, - }, - ], - }, - optimization: webpackBase.optimization(latestBuild), - plugins: [ - new CopyWebpackPlugin([ - "public", - { from: "../public", to: "static" }, - { from: "../build-translations/output", to: "static/translations" }, - { - from: "../node_modules/leaflet/dist/leaflet.css", - to: "static/images/leaflet/", - }, - { - from: "../node_modules/roboto-fontface/fonts/roboto/*.woff2", - to: "static/fonts/roboto/", - }, - { - from: "../node_modules/leaflet/dist/images", - to: "static/images/leaflet/", - }, - ]), - ].filter(Boolean), - resolve: webpackBase.resolve, - output: { - filename: "[name].js", - chunkFilename: chunkFilename, - path: buildPath, - publicPath, - }, - devServer: { - contentBase: "./public", - }, - }; -}; diff --git a/package.json b/package.json index 427eccc415..54ad5befaf 100644 --- a/package.json +++ b/package.json @@ -178,7 +178,7 @@ "web-component-tester": "^6.9.2", "webpack": "^4.40.2", "webpack-cli": "^3.3.9", - "webpack-dev-server": "^3.8.1", + "webpack-dev-server": "^3.10.3", "webpack-manifest-plugin": "^2.0.4", "workbox-webpack-plugin": "^4.1.1", "workerize-loader": "^1.1.0" diff --git a/yarn.lock b/yarn.lock index a043cd3e32..0e066ef8e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3639,11 +3639,6 @@ async@2.0.1: dependencies: lodash "^4.8.0" -async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - async@^2.0.0, async@^2.0.1, async@^2.1.2, async@^2.4.1, async@^2.6.1, async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" @@ -5460,7 +5455,7 @@ debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" -debug@3.2.6, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: +debug@3.2.6, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -7809,6 +7804,16 @@ http-parser-js@>=0.4.0: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + http-proxy-middleware@^0.17.2: version "0.17.4" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" @@ -7819,16 +7824,6 @@ http-proxy-middleware@^0.17.2: lodash "^4.17.2" micromatch "^2.3.11" -http-proxy-middleware@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - http-proxy@^1.16.2, http-proxy@^1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" @@ -8102,10 +8097,10 @@ ipaddr.js@1.9.0, ipaddr.js@^1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== -is-absolute-url@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.2.tgz#554f2933e7385cc46e94351977ca2081170a206e" - integrity sha512-+5g/wLlcm1AcxSP7014m6GvbPHswDx980vD/3bZaap8aGV9Yfs7Q6y6tfaupgZ5O74Byzc8dGrSCJ+bFXx0KdA== +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== is-absolute@^1.0.0: version "1.0.0" @@ -9237,10 +9232,10 @@ logform@^2.1.1: ms "^2.1.1" triple-beam "^1.3.0" -loglevel@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.4.tgz#f408f4f006db8354d0577dcf6d33485b3cb90d56" - integrity sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g== +loglevel@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" + integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== lolex@^1.6.0: version "1.6.0" @@ -9683,7 +9678,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -9908,10 +9903,10 @@ node-environment-flags@1.0.4: dependencies: object.getownpropertydescriptors "^2.0.3" -node-forge@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.8.2.tgz#b4bcc59fb12ce77a8825fc6a783dfe3182499c5a" - integrity sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg== +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== "node-libs-browser@^1.0.0 || ^2.0.0": version "2.2.0" @@ -11025,14 +11020,14 @@ polyserve@^0.27.13: send "^0.16.2" spdy "^3.3.3" -portfinder@^1.0.24: - version "1.0.24" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa" - integrity sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg== +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" posix-character-classes@^0.1.0: version "0.1.1" @@ -11998,12 +11993,12 @@ selenium-standalone@^6.7.0: which "^1.3.1" yauzl "^2.10.0" -selfsigned@^1.10.6: - version "1.10.6" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.6.tgz#7b3cd37ed9c2034261a173af1a1aae27d8169b67" - integrity sha512-i3+CeqxL7DpAazgVpAGdKMwHuL63B5nhJMh9NQ7xmChGkA3jNFflq6Jyo1LLJYcr3idWiNOPWHCrm4zMayLG4w== +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== dependencies: - node-forge "0.8.2" + node-forge "0.9.0" semver-compare@^1.0.0: version "1.0.0" @@ -14033,10 +14028,10 @@ webpack-cli@^3.3.9: v8-compile-cache "2.0.3" yargs "13.2.4" -webpack-dev-middleware@^3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.1.tgz#1167aea02afa034489869b8368fe9fed1aea7d09" - integrity sha512-5MWu9SH1z3hY7oHOV6Kbkz5x7hXbxK56mGHNqHTe6d+ewxOwKUxoUJBs7QIaJb33lPjl9bJZ3X0vCoooUzC36A== +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== dependencies: memory-fs "^0.4.1" mime "^2.4.4" @@ -14044,10 +14039,10 @@ webpack-dev-middleware@^3.7.1: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.8.1.tgz#485b64c4aadc23f601e72114b40c1b1fea31d9f1" - integrity sha512-9F5DnfFA9bsrhpUCAfQic/AXBVHvq+3gQS+x6Zj0yc1fVVE0erKh2MV4IV12TBewuTrYeeTIRwCH9qLMvdNvTw== +webpack-dev-server@^3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -14058,18 +14053,18 @@ webpack-dev-server@^3.8.1: del "^4.1.1" express "^4.17.1" html-entities "^1.2.1" - http-proxy-middleware "^0.19.1" + http-proxy-middleware "0.19.1" import-local "^2.0.0" internal-ip "^4.3.0" ip "^1.1.5" - is-absolute-url "^3.0.2" + is-absolute-url "^3.0.3" killable "^1.0.1" - loglevel "^1.6.4" + loglevel "^1.6.6" opn "^5.5.0" p-retry "^3.0.1" - portfinder "^1.0.24" + portfinder "^1.0.25" schema-utils "^1.0.0" - selfsigned "^1.10.6" + selfsigned "^1.10.7" semver "^6.3.0" serve-index "^1.9.1" sockjs "0.3.19" @@ -14078,7 +14073,7 @@ webpack-dev-server@^3.8.1: strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "^3.7.1" + webpack-dev-middleware "^3.7.2" webpack-log "^2.0.0" ws "^6.2.1" yargs "12.0.5"