mirror of
https://github.com/urbit/shrub.git
synced 2024-12-25 04:52:06 +03:00
106 lines
2.8 KiB
JavaScript
106 lines
2.8 KiB
JavaScript
const path = require("path");
|
|
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
|
|
const MomentLocalesPlugin = require("moment-locales-webpack-plugin");
|
|
const webpack = require("webpack");
|
|
const { execSync } = require("child_process");
|
|
|
|
const GIT_DESC = execSync("git describe --always", { encoding: "utf8" }).trim();
|
|
|
|
module.exports = {
|
|
mode: "production",
|
|
entry: {
|
|
app: "./src/index.tsx",
|
|
serviceworker: "./src/serviceworker.js",
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.(j|t)sx?$/,
|
|
use: {
|
|
loader: "babel-loader",
|
|
options: {
|
|
presets: [
|
|
"@babel/preset-env",
|
|
"@babel/typescript",
|
|
"@babel/preset-react",
|
|
],
|
|
plugins: [
|
|
"lodash",
|
|
"@babel/transform-runtime",
|
|
"@babel/plugin-proposal-object-rest-spread",
|
|
"@babel/plugin-proposal-optional-chaining",
|
|
"@babel/plugin-proposal-class-properties",
|
|
],
|
|
},
|
|
},
|
|
exclude:
|
|
/node_modules\/(?!(@tlon\/indigo-dark|@tlon\/indigo-light|@tlon\/indigo-react|@urbit\/api)\/).*/,
|
|
},
|
|
{
|
|
test: /\.css$/i,
|
|
use: [
|
|
// Creates `style` nodes from JS strings
|
|
"style-loader",
|
|
// Translates CSS into CommonJS
|
|
"css-loader",
|
|
// Compiles Sass to CSS
|
|
"sass-loader",
|
|
],
|
|
},
|
|
{
|
|
test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
|
|
use: [
|
|
{
|
|
loader: "file-loader",
|
|
options: {
|
|
name: "[name].[ext]",
|
|
outputPath: "fonts/",
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
resolve: {
|
|
extensions: [".js", ".ts", ".tsx"],
|
|
},
|
|
devtool: "source-map",
|
|
// devServer: {
|
|
// contentBase: path.join(__dirname, './'),
|
|
// hot: true,
|
|
// port: 9000,
|
|
// historyApiFallback: true
|
|
// },
|
|
plugins: [
|
|
new MomentLocalesPlugin(),
|
|
new CleanWebpackPlugin(),
|
|
new webpack.DefinePlugin({
|
|
"process.env.LANDSCAPE_STREAM": JSON.stringify(
|
|
process.env.LANDSCAPE_STREAM
|
|
),
|
|
"process.env.LANDSCAPE_SHORTHASH": JSON.stringify(GIT_DESC),
|
|
"process.env.LANDSCAPE_STORAGE_VERSION": Date.now().toString(),
|
|
"process.env.LANDSCAPE_LAST_WIPE": "2021-10-20",
|
|
}),
|
|
new HtmlWebpackPlugin({
|
|
title: "Groups",
|
|
template: "./public/index.html",
|
|
favicon: "./src/assets/img/favicon.png",
|
|
}),
|
|
],
|
|
output: {
|
|
filename: (pathData) => {
|
|
return pathData.chunk.name === "app"
|
|
? "index.[contenthash].js"
|
|
: "[name].js";
|
|
},
|
|
path: path.resolve(__dirname, "../dist"),
|
|
publicPath: "/apps/landscape/",
|
|
},
|
|
optimization: {
|
|
minimize: true,
|
|
usedExports: true,
|
|
},
|
|
};
|