Skip to content

Commit 5fb83f3

Browse files
committed
Initial project setup (via typescript and webpack tutorials)
0 parents  commit 5fb83f3

11 files changed

+14386
-0
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules
2+

README.md

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# keypost-web
2+
3+
```
4+
npm install
5+
npm install --save-dev webpack-dev-server ts-node @types/webpack-dev-server @types/node html-webpack-plugin
6+
export NODE_OPTIONS=--openssl-legacy-provider
7+
npm run build
8+
npm run start
9+
```
10+
11+
Initial project setup from https://blog.logrocket.com/using-webpack-typescript/
12+
Initial project setup from https://learntypescript.dev/12/l4-webpack
13+
Trouble Shooting: https://stackoverflow.com/a/69699772
14+

dist/bundle.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.html

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<!doctype html><html><head><meta charset="utf-8"/></head><body><div class="cal"><center><form><br><p>Result : <span id="display"></span></p><input type="number" class="input" placeholder="Enter first number" name="firstnumber" value="1" min="1" min="9"/><br><input type="number" class="input" placeholder="Enter second number" name="secondnumber" value="1" min="1" min="9"/><br><br><button type="submit" class="button">Subtract</button></form></center></div><script src="bundle.js"></script></body></html>

package-lock.json

+14,264
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "keypost-web",
3+
"version": "0.0.1",
4+
"description": "KeyPost web client",
5+
"main": "dist/main.js",
6+
"devDependencies": {
7+
"@types/node": "^18.7.14",
8+
"@types/webpack-dev-server": "^4.7.2",
9+
"html-webpack-plugin": "^4.5.2",
10+
"ts-loader": "^8.0.3",
11+
"ts-node": "^10.9.1",
12+
"typescript": "^4.0.2",
13+
"webpack": "^4.44.1",
14+
"webpack-cli": "^4.10.0",
15+
"webpack-dev-server": "^4.10.1"
16+
},
17+
"scripts": {
18+
"start": "webpack-dev-server --mode development",
19+
"build": "webpack --mode production"
20+
}
21+
}

src/app.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function subtract(a: number, b: number): number {
2+
return a - b;
3+
}

src/custom.html

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8" />
5+
</head>
6+
<body>
7+
<div class="cal">
8+
<center>
9+
<form>
10+
<br>
11+
<p>Result : <span id="display"></span></p>
12+
<input type="number" class="input" placeholder="Enter first number" name="firstnumber" value="1" min="1" min="9" /><br>
13+
<input type="number" class="input" placeholder="Enter second number" name="secondnumber" value="1" min="1" min="9" /><br><br>
14+
<button type="submit" class="button">Subtract</button>
15+
</form>
16+
</center>
17+
</div>
18+
</body>
19+
</html>

src/index.ts

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { subtract } from "./app";
2+
3+
function init() {
4+
const form = document.querySelector("form");
5+
form?.addEventListener("submit", submitHandler);
6+
}
7+
8+
function submitHandler(e: Event) {
9+
e.preventDefault();
10+
const num1 = document.querySelector("input[name='firstnumber']") as HTMLInputElement;
11+
const num2 = document.querySelector("input[name='secondnumber']") as HTMLInputElement;
12+
const result = subtract(Number(num1.value), Number(num2.value));
13+
const resultElement = document.querySelector("p");
14+
if (resultElement) {
15+
resultElement.textContent = result.toString();
16+
}
17+
}
18+
19+
init();
20+

tsconfig.json

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"compilerOptions": {
3+
"noImplicitAny": true,
4+
"target": "ES5",
5+
"module": "ES2015"
6+
}
7+
}

webpack.config.ts

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
const HtmlWebpackPlugin = require("html-webpack-plugin");
2+
const path = require('path');
3+
4+
module.exports = {
5+
entry: './src/index.ts',
6+
module: {
7+
rules: [
8+
{
9+
test: /\.ts?$/,
10+
use: 'ts-loader',
11+
exclude: /node_modules/,
12+
}
13+
],
14+
},
15+
resolve: {
16+
extensions: ['.tsx', '.ts', '.js'],
17+
},
18+
output: {
19+
filename: 'bundle.js',
20+
path: path.resolve(__dirname, 'dist'),
21+
},
22+
23+
plugins: [
24+
new HtmlWebpackPlugin({
25+
title: 'KeyPost Web',
26+
template: 'src/custom.html' })
27+
],
28+
29+
devServer: {
30+
static: path.join(__dirname, "dist"),
31+
compress: true,
32+
port: 4000,
33+
},
34+
};

0 commit comments

Comments
 (0)