Webpack builds scaffolding to package TypeScript code

Webpack builds scaffolding to package TypeScript code

Create a folder

Directory structure: dabaots

Initialize npm init -y to generate package.json file

Directory structure:
dabaots
dabaots/package.json

Then install the following tools in the development environment

npm i -D

webpack························(The core tool for packaging code
webpack-cli····················(command line tool for webpack)
typescript ······················(the core package required to write ts)
ts-loader ·························(webpack and ts can be integrated through ts-loader)
html-webpack-plugin … (a webpack plugin that automatically generates HTML)
webpack-dev-server … (no need to refresh the update page)
clean-webpack-plugin … (How to regenerate the latest files in dist will be automatically cleared before each package is launched)
"@babel/core" "@babel/preset-env" babel-loader core-js (install babel conversion, it will convert to the code according to your environment)

Small problems that may be encountered: The problem that may occur here is that if the version of the dependency package webpack-dev-server you downloaded is incompatible with Google's, it is recommended to change the plug-in version to a lower level or upgrade Google Chrome to the latest version, otherwise an error "Cannot GET /chrome.exe" will occur

Next, create webpack.config.js for configuration

Directory structure:
dabaots
dabaots/package.json
dabaots/webpack.config.js

// Import a package const path = require("path")

//Introduce the package for automatically generating HTML const HtmlWebpackPlugin = require("html-webpack-plugin")

//Introduce the plugin to update the dist file const {CleanWebpackPlugin} = require("clean-webpack-plugin")

// All configuration information in webpack should be written into moudle.exportsmodule.exports={
    //Specify the entry file entry: "./src/index.ts",
    //Specify the directory where the packaged file is located output:{
        //Specify the directory path of the packaged file:path.resolve(__dirname,"dist"),
        //Specify the file name of the packaged file: "bundle.js",
        //Do not use arrow functions when compiling environment: {
            arrowFunction: false
        }
    },
    
    //Webpack needs to use module when packaging.module:{
        //Specify the rules to load rules:[{
            // test specifies the file test:/\.ts$/ where the rule takes effect.
            // use is the loader to use
            //Configure babel
            use:[
                {//Specify loader loader: "babel-loader",
                    options:{
                        //Set the predefined environment presets:[
                            [
                                //Specify the environment plugin "@babel/preset-env",
                                //Configuration information {
                                    //Browser targets to be compatible:{
                                        "chrome":"88"
                                    },
                                    //Specify the corejs version "corejs":"3",
                                    // means loading on demand "useBuiltIns": "usage"
                                }
                            ]
                        ]
                    }
                },
                'ts-loader'
            ],
            //Set files that are not packaged and uploaded exclude: ["/node_modules/"]
        }]
    },
    
    // Configure webpack plugins:[
        new HtmlWebpackPlugin({
            // Custom html template address template: "./src/index.html"
        }),
        //Each time before packaging and launching, the files in dist will be automatically cleared. How to regenerate the latest files new CleanWebpackPlugin()
    ],
    
    resolve:{
        //Solve the problem of error when introducing other ts packages separately in ts files extensions:['.ts','.js']
    }
}

Finally, write the packaging and running scripts in package.json

In the terminal, npm run build package and run

After successful packaging, a dist file will be automatically generated

npm run start automatically opens Google Chrome and the content is hot updated

This is the end of this article about webpack scaffolding and TypeScript code packaging. For more relevant webpack TypeScript code packaging content, please search 123WORDPRESS.COM's previous articles or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • TypeScript enumeration basics and examples
  • In-depth reading and practice records of conditional types in TypeScript
  • Typescript+react to achieve simple drag and drop effects on mobile and PC
  • Implementation of TypeScript in React project
  • Practical record of Vue3 combined with TypeScript project development
  • Vue3 + TypeScript Development Summary
  • Vue3+TypeScript implements a complete example of a recursive menu component
  • How to use TypeScript in Vue
  • A brief discussion on the understanding of TypeScript index signatures

<<:  Analyzing the MySql CURRENT_TIMESTAMP function by example

>>:  Summary of some common writing methods that cause MySQL index failure

Recommend

The difference between MySQL execute, executeUpdate and executeQuery

The differences among execute, executeUpdate, and...

Analysis of the HTML writing style and reasons of experienced people

1. Navigation: Unordered List vs. Other Label Ele...

How to use the yum command

1. Introduction to yum Yum (full name Yellow dogU...

Comparing Document Locations

<br />A great blog post by PPK two years ago...

A brief discussion on common operations of MySQL in cmd and python

Environment configuration 1: Install MySQL and ad...

How to install MySQL 8.0 database on M1 chip (picture and text)

1. Download First of all, I would like to recomme...

Record a slow query event caused by a misjudgment of the online MySQL optimizer

Preface: I received crazy slow query and request ...

Solution to the lack of my.ini file in MySQL 5.7

What is my.ini? my.ini is the configuration file ...

The practical process of login status management in the vuex project

Table of contents tool: Login scenario: practice:...

Basic principles of MySQL scalable design

Table of contents Preface 1. What is scalability?...

JavaScript implements changing the color of a web page through a slider

Hello everyone, today when I was looking at the H...

Sample code for changing the color of a png image through a CSS3 filter

This method uses the drop-shadow filter in CSS3 t...

Docker nginx + https subdomain configuration detailed tutorial

Today I happened to be helping a friend move his ...