I'm trying to create web application using TS and Webpack, its name is "Shooter" - a basic game on browser. Today I'll show you how to init the project with Typescript and use Webpack to bundle the code.
Prerequisites
- Installed nodejs
Create a new folder, then open it by vscode
mkdir shooter
cd shooter
code .
Init npm and git
npm init -y
git init
In .gitignore file, add node_modules and dist to ignore them.
Init typescript config and webpack
Init typescript config file
npx tsc --init
Add ts-loader and webpack-cli to use webpack with typescript
npm install ts-loader --save-dev
npm install webpack-cli --save-dev
Create webpack.config.js file and add those configurations:
const path = require("path");
module.exports = {
entry: "./src/index.ts",
module: {
rules: [
{
test: /\.tsx?$/,
use: "ts-loader",
exclude: /node_modules/,
},
],
},
resolve: {
extensions: [".tsx", ".ts", ".js"],
},
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "dist"),
},
};
Create .ts file and test
Create src directory and index.ts file with some typescript code to test.
In package.json file, add this script inside scripts to build the code.
"build": "webpack --mode=development"
Build code by using
npm run build
And you can see file bundle.js inside dist folder.
Add watch feature
To make webpack bundles code automatically each time you change code in src directory, add this script into package.json
"watch": "webpack --mode=development --watch"
Try to update code inside src directory and watch webpack bundles you code immediately.
Binding bundle.js with index.html
Create index.html file with some code in public directory.
Add html-webpack-plugin
npm install --save-dev html-webpack-plugin
Update add the plugin to webpack.config.js file
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
entry: "./src/index.ts",
module: {
rules: [
{
test: /\.tsx?$/,
use: "ts-loader",
exclude: /node_modules/,
},
],
},
resolve: {
extensions: [".tsx", ".ts", ".js"],
},
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "dist"),
},
plugins: [
new HtmlWebpackPlugin({
template: "public/index.html",
}),
],
};
Now, run the project again, you will see the bundle.js is binding in header tag.
Use dev-server
To start you web application and apply watching code change in webpack, we can use web-pack-dev-server
npm install webpack-dev-server --save-dev
Add this configuration in webpack.config.js
devServer: {
static: {
directory: path.join(__dirname, "dist"),
},
compress: true,
port: 9000,
},
Then finally add this script package.json
"start": "webpack serve --mode=development"
Now run the project with
npm run start
And open http://localhost:9000/, you will see your application run there.
Top comments (0)