mirror of
https://github.com/mickael-kerjean/filestash.git
synced 2025-10-28 04:05:21 +08:00
the app manifest used to be statically generated meaning it would show Filestash whenever user tries to install as an app. Now admin can change that to show something else
107 lines
3.3 KiB
JavaScript
107 lines
3.3 KiB
JavaScript
const webpack = require("webpack");
|
|
const path = require("path");
|
|
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
// const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
|
|
const UglifyJSPlugin = require("uglifyjs-webpack-plugin");
|
|
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
|
const CompressionPlugin = require("compression-webpack-plugin");
|
|
|
|
const config = {
|
|
entry: {
|
|
app: path.join(__dirname, "client", "index.js"),
|
|
},
|
|
output: {
|
|
path: path.join(__dirname, "dist", "data", "public"),
|
|
publicPath: "/",
|
|
filename: "assets/js/[name]_[chunkhash].js",
|
|
chunkFilename: "assets/js/chunk_[name]_[id]_[chunkhash].js",
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: path.join(__dirname, "client"),
|
|
use: ["babel-loader"],
|
|
exclude: /node_modules/,
|
|
},
|
|
{
|
|
test: /\.html$/,
|
|
loader: "html-loader",
|
|
},
|
|
{
|
|
test: /\.woff2$/,
|
|
loader: "woff-loader",
|
|
},
|
|
{
|
|
test: /\.scss$/,
|
|
loaders: ["style-loader", "css-loader", "sass-loader"],
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
loaders: ["style-loader", "css-loader"],
|
|
},
|
|
{
|
|
test: /\.(pdf|jpg|png|gif|svg|ico|woff|woff2|eot|ttf)$/,
|
|
loader: "url-loader",
|
|
},
|
|
{
|
|
test: /[a-z]+\.worker\.js$/,
|
|
loader: "worker-loader",
|
|
options: { name: "assets/js/[name]_[hash].js" },
|
|
},
|
|
],
|
|
},
|
|
plugins: [
|
|
new webpack.DefinePlugin({
|
|
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV),
|
|
}),
|
|
new webpack.optimize.OccurrenceOrderPlugin(),
|
|
new HtmlWebpackPlugin({
|
|
template: path.join(__dirname, "client", "index.html"),
|
|
inject: true,
|
|
minify: {
|
|
collapseWhitespace: true,
|
|
removeComments: true,
|
|
minifyJS: true,
|
|
minifyCSS: true,
|
|
},
|
|
}),
|
|
new CopyWebpackPlugin([
|
|
{ from: "locales/*.json", to: "assets/" },
|
|
{ from: "worker/*.js", to: "assets/" },
|
|
{ from: "assets/logo/*" },
|
|
{ from: "assets/icons/*" },
|
|
{ from: "assets/fonts/*" },
|
|
], { context: path.join(__dirname, "client") }),
|
|
new CopyWebpackPlugin([
|
|
{ from: "node_modules/pdfjs-dist/", to: "assets/vendor/pdfjs/2.6.347/" },
|
|
]),
|
|
// new BundleAnalyzerPlugin()
|
|
],
|
|
};
|
|
|
|
|
|
if (process.env.NODE_ENV === "production") {
|
|
config.plugins.push(new UglifyJSPlugin({
|
|
sourceMap: false,
|
|
extractComments: true,
|
|
}));
|
|
config.plugins.push(new CompressionPlugin({
|
|
asset: "[path].gz[query]",
|
|
algorithm: "gzip",
|
|
test: /\.js$|\.json$|\.html$|\.svg|\.ico$/,
|
|
threshold: 0,
|
|
minRatio: 0.8,
|
|
}));
|
|
config.plugins.push(new CompressionPlugin({
|
|
asset: "[path].br[query]",
|
|
algorithm: "brotliCompress",
|
|
test: /\.js$|\.json$|\.html$|\.svg|\.ico$/,
|
|
threshold: 0,
|
|
minRatio: 0.8,
|
|
}));
|
|
} else {
|
|
config.devtool = "#inline-source-map";
|
|
}
|
|
|
|
module.exports = config;
|