mirror of
https://github.com/home-assistant/frontend.git
synced 2025-04-26 14:27:20 +00:00
174 lines
3.7 KiB
JavaScript
174 lines
3.7 KiB
JavaScript
// Tasks to run webpack.
|
|
const gulp = require("gulp");
|
|
const webpack = require("webpack");
|
|
const WebpackDevServer = require("webpack-dev-server");
|
|
const log = require("fancy-log");
|
|
const path = require("path");
|
|
const paths = require("../paths");
|
|
const {
|
|
createAppConfig,
|
|
createDemoConfig,
|
|
createCastConfig,
|
|
createHassioConfig,
|
|
createGalleryConfig,
|
|
} = require("../webpack");
|
|
|
|
const bothBuilds = (createConfigFunc, params) => [
|
|
createConfigFunc({ ...params, latestBuild: true }),
|
|
createConfigFunc({ ...params, latestBuild: false }),
|
|
];
|
|
|
|
const runDevServer = ({
|
|
compiler,
|
|
contentBase,
|
|
port,
|
|
listenHost = "localhost",
|
|
}) =>
|
|
new WebpackDevServer(compiler, {
|
|
open: true,
|
|
watchContentBase: true,
|
|
contentBase,
|
|
}).listen(port, listenHost, function(err) {
|
|
if (err) {
|
|
throw err;
|
|
}
|
|
// Server listening
|
|
log("[webpack-dev-server]", `http://localhost:${port}`);
|
|
});
|
|
|
|
const handler = (done) => (err, stats) => {
|
|
if (err) {
|
|
console.log(err.stack || err);
|
|
if (err.details) {
|
|
console.log(err.details);
|
|
}
|
|
return;
|
|
}
|
|
|
|
log(`Build done @ ${new Date().toLocaleTimeString()}`);
|
|
|
|
if (stats.hasErrors() || stats.hasWarnings()) {
|
|
console.log(stats.toString("minimal"));
|
|
}
|
|
|
|
if (done) {
|
|
done();
|
|
}
|
|
};
|
|
|
|
gulp.task("webpack-watch-app", () => {
|
|
// we are not calling done, so this command will run forever
|
|
webpack(createAppConfig({ isProdBuild: false, latestBuild: true })).watch(
|
|
{ ignored: /build-translations/ },
|
|
handler()
|
|
);
|
|
gulp.watch(
|
|
path.join(paths.translations_src, "en.json"),
|
|
gulp.series("build-translations", "copy-translations")
|
|
);
|
|
});
|
|
|
|
gulp.task(
|
|
"webpack-prod-app",
|
|
() =>
|
|
new Promise((resolve) =>
|
|
webpack(
|
|
bothBuilds(createAppConfig, { isProdBuild: true }),
|
|
handler(resolve)
|
|
)
|
|
)
|
|
);
|
|
|
|
gulp.task("webpack-dev-server-demo", () => {
|
|
runDevServer({
|
|
compiler: webpack(bothBuilds(createDemoConfig, { isProdBuild: false })),
|
|
contentBase: paths.demo_root,
|
|
port: 8090,
|
|
});
|
|
});
|
|
|
|
gulp.task(
|
|
"webpack-prod-demo",
|
|
() =>
|
|
new Promise((resolve) =>
|
|
webpack(
|
|
bothBuilds(createDemoConfig, {
|
|
isProdBuild: true,
|
|
}),
|
|
handler(resolve)
|
|
)
|
|
)
|
|
);
|
|
|
|
gulp.task("webpack-dev-server-cast", () => {
|
|
runDevServer({
|
|
compiler: webpack(bothBuilds(createCastConfig, { isProdBuild: false })),
|
|
contentBase: paths.cast_root,
|
|
port: 8080,
|
|
// Accessible from the network, because that's how Cast hits it.
|
|
listenHost: "0.0.0.0",
|
|
});
|
|
});
|
|
|
|
gulp.task(
|
|
"webpack-prod-cast",
|
|
() =>
|
|
new Promise((resolve) =>
|
|
webpack(
|
|
bothBuilds(createCastConfig, {
|
|
isProdBuild: true,
|
|
}),
|
|
|
|
handler(resolve)
|
|
)
|
|
)
|
|
);
|
|
|
|
gulp.task("webpack-watch-hassio", () => {
|
|
// we are not calling done, so this command will run forever
|
|
webpack(
|
|
createHassioConfig({
|
|
isProdBuild: false,
|
|
latestBuild: false,
|
|
})
|
|
).watch({}, handler());
|
|
});
|
|
|
|
gulp.task(
|
|
"webpack-prod-hassio",
|
|
() =>
|
|
new Promise((resolve) =>
|
|
webpack(
|
|
createHassioConfig({
|
|
isProdBuild: true,
|
|
latestBuild: false,
|
|
}),
|
|
handler(resolve)
|
|
)
|
|
)
|
|
);
|
|
|
|
gulp.task("webpack-dev-server-gallery", () => {
|
|
runDevServer({
|
|
// 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,
|
|
});
|
|
});
|
|
|
|
gulp.task(
|
|
"webpack-prod-gallery",
|
|
() =>
|
|
new Promise((resolve) =>
|
|
webpack(
|
|
createGalleryConfig({
|
|
isProdBuild: true,
|
|
latestBuild: true,
|
|
}),
|
|
|
|
handler(resolve)
|
|
)
|
|
)
|
|
);
|