@khmyznikov/pwa-install
Version:
PWA install dialog provide more convenience user experience and fix lack of native dialogs in some browsers.
76 lines (69 loc) • 2.17 kB
JavaScript
import common from "./webpack.common.js";
import webpack from "webpack";
import { merge } from "webpack-merge";
import path, { resolve } from "path";
import { fileURLToPath } from "url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
import TerserPlugin from "terser-webpack-plugin";
import { CleanWebpackPlugin } from "clean-webpack-plugin";
import FileManagerPlugin from "filemanager-webpack-plugin";
import CopyWebpackPlugin from "copy-webpack-plugin";
const build_date = new Date(Date.now())
const buildTimestamp = JSON.stringify(`${build_date.getDate()}.${build_date.getMonth() + 1}.${build_date.getFullYear()}/${build_date.getHours()}:${build_date.getMinutes()}:${build_date.getSeconds()}`);
export default merge(common, {
output: {
filename: "pwa-install.bundle.js",
library: "PWAInstallComponent",
path: resolve(__dirname, '../dist/'),
},
plugins: [
new CleanWebpackPlugin(),
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1,
}),
new FileManagerPlugin({
events: {
onEnd: {
copy: [
{
source: resolve(__dirname, "../dist/pwa-install.bundle.js"),
destination: resolve(__dirname, "../docs/pwa-install.bundle.js"),
}
],
},
},
}),
// this is not recommended approach, just for demo purposes
new CopyWebpackPlugin({
patterns: [
{ from: resolve(__dirname, "./service-worker-source.js"), to: resolve(__dirname, "../docs/service-worker.js"),
transform: (content, path) => {
return content.toString().replace(/BUILD_TIMESTAMP/g, buildTimestamp);
}
}
],
})
],
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
test: /\.js$/,
extractComments: false,
terserOptions: {
compress: {
drop_console: true,
unsafe: true,
},
mangle: true,
output: {
comments: false,
beautify: false,
},
},
}),
],
},
devtool: "source-map",
});