TypeScript 第七天,TypeScript和webpack如何搭配使用

通常情况下我们TypeScript需要和webpack搭配起来使用,共同对项目进行打包处理,我们先看一下步骤:

1.初始化项目

进入项目根目录,执行命令 npm init -y,这一步的步骤的主要作用是创建我们webpack.json

2.下载构建工具

npm i -D webpack webpack-cli webpack-dev-server typescript ts-loader clean-webpack-plugin这个里面有很多包,我们来一个个分析:

webpack

webpack是我们的构建工具,相当于现在比较流行的vite

webpack-cli

webpack-cli是我们的webpack手脚架,也就是类似于我们的vue-cliVue的手脚架。

webpack-dev-server

webpack-dev-server是webpack的开发服务器,方便我们实时预览编写的网页。

typescript

typescript这就是我们TypeScript语言的编译器了。

ts-loader

ts-loader是我们TypeScript的加载器,也就是说用来加载我们的TypeScript文件到webpack构建工具中进行构建。

html-webpack-plugin

html-webpack-pluginwebpack中html插件,用来自动创建html文件.也就是说这个插件是用来将代码编译成html文件的

clean-webpack-plugin

clean-webpack-pluginwebpack中的清除插件,每次构建都会先清除目录,就是说我们构建的时候outDir目录下的所有文件夹下的所有文件都会被清除,然后再重新生成编译文件。

3.根目录下创建webpack的配置文件webpack.config.js

下面代码是我们配置基本的webpack配置文件,使用上面安装的插件并配置本地项目。

javascript 复制代码
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");

module.exports = {
    optimization:{
        minimize: false // 关闭代码压缩,可选
    },

    entry: "./src/index.ts",
    
    devtool: "inline-source-map",
    
    devServer: {
        contentBase: './dist'
    },

     // 指定打包文件所在的目录
    output:{
        // 指定打包的目录
        path:path.resolve(__dirname,'dist'), // 表示当前文件所在目录
        // 打包好的文件名
        filename:'bundle.js',
        // 告诉webpack不使用箭头函数
        environment:{
            arrowFunction:false
        }
    },

    resolve: {
        extensions: [".ts", ".js"]
    },
    // 指定webpack打包时要使用的模块
    module:{
        // 指定要加载的规则
        rules:[
            {
            // test指定的是规定生效的文件
            test:/\.ts$/,
            // 要使用的loader
            use:[
                
                // 配置babel
                {
                    // 指定加载器
                    loader:'babel-loader',
                    // 设置babel
                    options:{
                        // 设置预定义的环境
                        presets:[
                            [
                                // 指定环境的插件
                                "@babel/preset-env",
                                // 配置信息
                                {
                                    // 要兼容的目标浏览器
                                    targets:{
                                        "chrome":"58",
                                        "ie":"11"
                                    }, 
                                    // 指定corejs的版本
                                    corejs:"3",
                                    // 使用corejs的方法 usage:按需加载
                                    useBuiltIns:"usage"
                                }
                            ]
                        ]
                    }
                },
                'ts-loader',
            ],
            // 排除node_modules下的文件
            exclude:/node_modules/
           }
        ]
    },

    plugins: [
        new CleanWebpackPlugin(),
        new HtmlWebpackPlugin({
            title:'TS测试'
        }),
    ],
    // 用来设置引用模块
    resolve:{
        extensions:['.ts','.js'],
    }

}

4.根目录下创建tsconfig.json,配置可以根据自己需要

json 复制代码
{
    "compilerOptions": {
        "target": "ES2015",
        "module": "ES2015",
        "strict": true
    }
}

5.修改package.json添加如下配置

json 复制代码
{
  ...略...
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack",
    "start": "webpack serve --open chrome.exe"
  },
  ...略...
}

6.在src下创建ts文件,并在并命令行执行npm run build对代码进行编译,或者执行npm start来启动开发服务器

今天就先写道这里,谢谢大家观看,我们下次见

相关推荐
passerby606136 分钟前
完成前端时间处理的另一块版图
前端·github·web components
掘了43 分钟前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅1 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅1 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅2 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment2 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅2 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊2 小时前
jwt介绍
前端
爱敲代码的小鱼2 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
Cobyte2 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc