Make two builds of hassio (#6105)

This commit is contained in:
Paulus Schoutsen 2020-06-05 21:56:56 -07:00 committed by GitHub
parent 7050d19be7
commit e384f76ac1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 33 additions and 26 deletions

View File

@ -170,15 +170,12 @@ module.exports.config = {
}, },
hassio({ isProdBuild, latestBuild }) { hassio({ isProdBuild, latestBuild }) {
if (latestBuild) {
throw new Error("Hass.io does not support latest build!");
}
return { return {
entry: { entry: {
entrypoint: path.resolve(paths.hassio_dir, "src/entrypoint.ts"), entrypoint: path.resolve(paths.hassio_dir, "src/entrypoint.ts"),
}, },
outputPath: paths.hassio_output_root, outputPath: outputPath(paths.hassio_output_root, latestBuild),
publicPath: paths.hassio_publicPath, publicPath: publicPath(latestBuild, paths.hassio_publicPath),
isProdBuild, isProdBuild,
latestBuild, latestBuild,
dontHash: new Set(["entrypoint"]), dontHash: new Set(["entrypoint"]),

View File

@ -1,6 +1,9 @@
const gulp = require("gulp"); const gulp = require("gulp");
const fs = require("fs");
const path = require("path");
const env = require("../env"); const env = require("../env");
const paths = require("../paths");
require("./clean.js"); require("./clean.js");
require("./gen-icons-json.js"); require("./gen-icons-json.js");
@ -8,6 +11,24 @@ require("./webpack.js");
require("./compress.js"); require("./compress.js");
require("./rollup.js"); require("./rollup.js");
async function writeEntrypointJS() {
// We ship two builds and we need to do feature detection on what version to load.
fs.mkdirSync(paths.hassio_output_root, { recursive: true });
fs.writeFileSync(
path.resolve(paths.hassio_output_root, "entrypoint.js"),
`
try {
new Function("import('${paths.hassio_publicPath}/frontend_latest/entrypoint.js')")();
} catch (err) {
var el = document.createElement('script');
el.src = '${paths.hassio_publicPath}/frontend_es5/entrypoint.js';
document.body.appendChild(el);
}
`,
{ encoding: "utf-8" }
);
}
gulp.task( gulp.task(
"develop-hassio", "develop-hassio",
gulp.series( gulp.series(
@ -16,6 +37,7 @@ gulp.task(
}, },
"clean-hassio", "clean-hassio",
"gen-icons-json", "gen-icons-json",
writeEntrypointJS,
env.useRollup() ? "rollup-watch-hassio" : "webpack-watch-hassio" env.useRollup() ? "rollup-watch-hassio" : "webpack-watch-hassio"
) )
); );
@ -29,6 +51,7 @@ gulp.task(
"clean-hassio", "clean-hassio",
"gen-icons-json", "gen-icons-json",
env.useRollup() ? "rollup-prod-hassio" : "webpack-prod-hassio", env.useRollup() ? "rollup-prod-hassio" : "webpack-prod-hassio",
writeEntrypointJS,
...// Don't compress running tests ...// Don't compress running tests
(env.isTest() ? [] : ["compress-hassio"]) (env.isTest() ? [] : ["compress-hassio"])
) )

View File

@ -92,11 +92,7 @@ gulp.task("rollup-watch-app", () => {
}); });
gulp.task("rollup-watch-hassio", () => { gulp.task("rollup-watch-hassio", () => {
watchRollup( watchRollup(rollupConfig.createHassioConfig, ["hassio/src/**"]);
// Force latestBuild = false for hassio config.
(conf) => rollupConfig.createHassioConfig({ ...conf, latestBuild: false }),
["hassio/src/**"]
);
}); });
gulp.task("rollup-dev-server-demo", () => { gulp.task("rollup-dev-server-demo", () => {
@ -137,12 +133,7 @@ gulp.task(
); );
gulp.task("rollup-prod-hassio", () => gulp.task("rollup-prod-hassio", () =>
buildRollup( bothBuilds(rollupConfig.createHassioConfig, { isProdBuild: true })
rollupConfig.createHassioConfig({
isProdBuild: true,
latestBuild: false,
})
)
); );
gulp.task("rollup-prod-gallery", () => gulp.task("rollup-prod-gallery", () =>

View File

@ -129,7 +129,7 @@ gulp.task("webpack-watch-hassio", () => {
webpack( webpack(
createHassioConfig({ createHassioConfig({
isProdBuild: false, isProdBuild: false,
latestBuild: false, latestBuild: true,
}) })
).watch({}, handler()); ).watch({}, handler());
}); });
@ -139,9 +139,8 @@ gulp.task(
() => () =>
new Promise((resolve) => new Promise((resolve) =>
webpack( webpack(
createHassioConfig({ bothBuilds(createHassioConfig, {
isProdBuild: true, isProdBuild: true,
latestBuild: false,
}), }),
handler(resolve) handler(resolve)
) )

View File

@ -34,7 +34,7 @@ module.exports = {
hassio_dir: path.resolve(__dirname, "../hassio"), hassio_dir: path.resolve(__dirname, "../hassio"),
hassio_output_root: path.resolve(__dirname, "../hassio/build"), hassio_output_root: path.resolve(__dirname, "../hassio/build"),
hassio_publicPath: "/api/hassio/app/", hassio_publicPath: "/api/hassio/app",
translations_src: path.resolve(__dirname, "../src/translations"), translations_src: path.resolve(__dirname, "../src/translations"),
}; };

View File

@ -1,11 +1,8 @@
const { createHassioConfig } = require("../build-scripts/webpack.js"); const { createHassioConfig } = require("../build-scripts/webpack.js");
const { isProdBuild } = require("../build-scripts/env.js"); const { isProdBuild, isStatsBuild } = require("../build-scripts/env.js");
// File just used for stats builds
const latestBuild = false;
module.exports = createHassioConfig({ module.exports = createHassioConfig({
isProdBuild: isProdBuild(), isProdBuild: isProdBuild(),
latestBuild, isStatsBuild: isStatsBuild(),
latestBuild: true,
}); });