Use Webpack

This commit is contained in:
Gender Shrapnel 2019-10-06 21:49:54 +02:00
parent 857562c0eb
commit 40900cdf1b
7 changed files with 4166 additions and 1 deletions

4112
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -44,11 +44,16 @@
"@types/luxon": "^1.15.2",
"@types/node": "^12.7.5",
"@types/pino": "^5.8.10",
"@types/webpack-dev-middleware": "^2.0.3",
"pino-pretty": "^3.2.1",
"ts-loader": "^6.2.0",
"ts-node-dev": "^1.0.0-pre.43",
"tsconfig-paths": "^3.9.0",
"tslint": "^5.20.0",
"tslint-config-prettier": "^1.18.0",
"typescript": "^3.6.3"
"typescript": "^3.6.3",
"webpack": "^4.41.0",
"webpack-cli": "^3.3.9",
"webpack-dev-middleware": "^3.7.2"
}
}

3
src/frontend/index.ts Normal file
View File

@ -0,0 +1,3 @@
import { noise } from "./noise";
window.onload = noise;

3
src/frontend/noise.ts Normal file
View File

@ -0,0 +1,3 @@
export const noise = () => {
alert("Hello!");
};

View File

@ -37,6 +37,20 @@ async function main() {
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
if (app.settings.env === "development") {
const webpack = require("webpack"); // tslint:disable-line:no-implicit-dependencies
const webpackDevMiddleware = require("webpack-dev-middleware"); // tslint:disable-line:no-implicit-dependencies
const config = require("../webpack.config").default;
const compiler = webpack(config);
app.use(
webpackDevMiddleware(compiler, {
publicPath: "/assets/"
})
);
}
app.set("view engine", "pug");
app.use("/", indexRouter);

View File

@ -1,6 +1,7 @@
html
head
title= title
script(src="/assets/main.bundle.js")
body
h1= message
p hahaha

27
webpack.config.ts Normal file
View File

@ -0,0 +1,27 @@
import path from "path";
import webpack from "webpack"; // tslint:disable-line:no-implicit-dependencies
const config: webpack.Configuration = {
devtool: "inline-source-map",
entry: "./src/frontend/index.ts",
mode: "development",
module: {
rules: [
{
exclude: /node_modules/,
test: /\.tsx?$/,
use: "ts-loader"
}
]
},
output: {
filename: "[name].bundle.js",
path: path.resolve(__dirname, "dist"),
publicPath: "/assets/"
},
resolve: {
extensions: [".tsx", ".ts", ".js"]
}
};
export default config;