使用Webpack打包TS代码

1. 全局安装typescript,并检验tsc安装是否ok。

# 全局安装typescript
npm install -g typescript 

# 检查ts版本,以验证ts安装成功
tsc -v

2. 新建目录mydemo,并初始化项目npm init -y,自动生成package.jsontsc --init,自动生成tsconfig.json,并对tsconfig.json进行修改。

# 新建目录mydemo
mkdir mydemo

# 进入目录mydemo
cd mydemo

# 初始化项目,自动生成package.json
npm init -y

# 自动生成tsconfig.json
tsc --init
{
  "name": "mydemo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
// tsconfig.json
{
  "include": ["./src/**/*"],
  "compilerOptions": {
    "target": "ES6",                                
    "module": "ES2015",                                  
    "strict": true                                                          
  }
}

3. mydemo下新建子目录:public、src、dist。public下新建文件:index.html;src下新建文件:main.ts。 其中,public用于存放模板文件index.html,dist用于存放编译生成的文件。整个项目的目录结构如下:
mydemo

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>mydemo</title>
</head>
<body>
    <div id="root"></div>
</body>
</html>
console.log("Hello TypeScript");

4. 安装依赖:webpack、webpack-cli、html-webpack-plugin、clean-webpack-plugin、webpack-dev-server、ts-loader、babel-loader、@babel/core、@babel/preset-env、cross-env

# 安装webpack webpack-cli
npm install --save-dev webpack webpack-cli

# 安装html-webpack-plugin clean-webpack-plugin webpack-dev-server
npm install --save-dev html-webpack-plugin clean-webpack-plugin webpack-dev-server

# 安装ts-loader
npm install --save-dev ts-loader

# 安装babel-loader @babel/core @babel/preset-env
npm install --save-dev babel-loader @babel/core @babel/preset-env

# 安装cross-env
npm install --save-dev cross-env

至此,项目根目录下自动生成了package-lock.jsonpackage.json中的内容也发生了变化,如下,

{
  "name": "mydemo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.18.9",
    "@babel/preset-env": "^7.18.9",
    "babel-loader": "^8.2.5",
    "clean-webpack-plugin": "^4.0.0",
    "cross-env": "^7.0.3",
    "html-webpack-plugin": "^5.5.0",
    "ts-loader": "^9.3.1",
    "webpack": "^5.73.0",
    "webpack-cli": "^4.10.0",
    "webpack-dev-server": "^4.9.3"
  }
}

5. 项目根目录下新建webpack配置文件:webpack.config.js

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin")
const {CleanWebpackPlugin} = require("clean-webpack-plugin");

module.exports = {
    entry:"./src/main.ts",
    output:{
        path:path.resolve(__dirname,"dist"),
        filename:"bundle.js"
    },
    module:{
        rules:[
            {
                test:/\.ts$/,
                use:[
                    {
                        loader:"babel-loader",
                        options:{
                            presets:["@babel/preset-env"]
                        }
                    },
                    "ts-loader"
                ],
                exclude:/node_modules/
            }
        ]
    },
    plugins:[
        new HtmlWebpackPlugin({
            template:"./public/index.html"
        }),
        new CleanWebpackPlugin()
    ],
    resolve:{
        extensions:[".ts",".js"]
    }
}

6. 修改package.json,添加如下 npm scripts"start": "cross-env NODE_ENV=development webpack server --open""build": "cross-env NODE_ENV=production webpack"

{
  "name": "mydemo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "cross-env NODE_ENV=development webpack server --open",
    "build": "cross-env NODE_ENV=production webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.18.9",
    "@babel/preset-env": "^7.18.9",
    "babel-loader": "^8.2.5",
    "clean-webpack-plugin": "^4.0.0",
    "cross-env": "^7.0.3",
    "html-webpack-plugin": "^5.5.0",
    "ts-loader": "^9.3.1",
    "webpack": "^5.73.0",
    "webpack-cli": "^4.10.0",
    "webpack-dev-server": "^4.9.3"
  }
}

7. 编译项目:npm run start或者npm run build
npm run start,将启动本地服务器http://localhost:8080/。
npm run build,将编译得到的文件输出至dist目录下,包括index.html和bundle.js。

<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>mydemo</title><script defer="defer" src="bundle.js"></script></head><body><div id="root"></div></body></html>
(()=>{"use strict";console.log("Hello TypeScript")})();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值