TypeScript入门到入土(3)webpack打包ts代码

2023-05-16

上一节我们讲了ts的编译选项,这一节我们介绍利用webpack打包我们的ts代码

前文链接:TypeScript入门到入土(2)_小杨爱编程的博客-CSDN博客

ts 的安装以及ts中类型:TypeScript从入门到入土(1)_小杨爱编程的博客-CSDN博客

首先我们初始化项目 npm init -y 会生成一个package.json的文件

 

接着我们安装依赖 npm i -D webpack webpack-cli typescript ts-loader

因为加了 -D 所以他会在配置文件中显示

接着我们创建一个js文件 webpack.config.js,配置这个js文件,配置如下信息

//引入一个包
const path=require('path')

//webpack的所有配置信息都应该写在module.exports里边
module.exports={
    //指定入口文件
    entry: "./src/index.ts",
    //指定打包文件的目录
    output: {
        //指定打包文件的目录
        path: path.resolve(__dirname,'dist'),
        //指定打包后的文件名字
        filename: "bundle.js",
    },
    //指定webpack打包时要使用的模块
    module: {
        //指定加载的规则
        rules: [
            {
                //test指的时规定生效的文件
                test:/\.ts$/,
                //指定要使用的loader
                use:"ts-loader",
                //要排除的文件
                exclude: /node_modules/
            }
        ]


    }
}

然后在package.json文件中加入  "build": "webpack"

 建立tsconfig.json文件配置如下

{
  "compilerOptions": {
    "module": "es6",
    "target": "es6",
    "strict": true
  },
}

接下来我们就可以运行 npm run build 命令来进行打包,为了方便测试,我们在src/index.ts中写下如下代码:

function sum(a:number,b:number):number{
    return a+b;
}

console.log(sum(123, 456));

我们执行 npm run build 命令进行打包

 虽然我们已经可以编译成js文件了,但是当我们手写的时候需要自己创建HTML并且手动引入js,这样有点麻烦,我们可以安装一个插件 npm i html-webpack-plugin,这样他会自动生成网页,但是我们也需要在webpack.config.js配置一下

//引入html-webpack-plugin
const HTMLWebPackPlugin =require('html-webpack-plugin')

//在配置对象中追加
plugins: [
            new HTMLWebPackPlugin({
                title: "你需要生成网页的标题",
                template: "你要参照生成HTML的模板"
            })
    ]

安装webpack的开发服务器,npm i -D webpack-dev-server

 在package.json中增加配置 "start":"webpack serve --opne chorme.exe",执行 npm run start 命令相当于开启浏览器动态监视代码的变化,若发生变化,会自动进行编译。

 

 当我们想在编译生成新的文件之前,把旧的文件删掉,再进行编译,保证生成的都是最新的,我们可以安装插件  npm i -D clean-webpack-plugin,但是我们也需要在webpack.config.js配置一下

//引入clean插件
const {CleanWebPackPlugin}=require('clean-webpack-plugin')

//配置对象追加

 plugins: [
            new CleanWebPackPlugin()
    ]

设置模块引用,我们也需要在webpack.config.js配置一下

//在配置对象后面追加 
//用来设置引用模块,表明以ts结尾的和以js结尾的可以当做模块引用
    resolve: {
        extensions: ['.ts','.js']
    }

下载babel的各种依赖,npm i -D @babel/core @babel/preset-env babel-loader core-js

配置babel,在webpack.config.js文件中配置babel

//引入一个包
const path=require('path')

//webpack的所有配置信息都应该写在module.exports里边
module.exports={
    //指定webpack打包时要使用的模块
    module: {
        //指定加载的规则
        rules: [
            {
                //test指的时规定生效的文件
                test:/\.ts$/,
                //指定要使用的loader
                use:[
                    //配置babel
                    {
                       //指明loader
                        loader: "babel-loader",
                        //设置babel
                        options: {
                            //设置预定义的环境
                            presets:[
                                [
                                    //指明环境的插件
                                    "@babel/preset-env",
                                    //配置信息
                                    {
                                        //指明要兼容的浏览器
                                        targets:{
                                            "chrome":"88"
                                        },
                                        //指定core js的版本
                                        "corejs":"3",
                                        //使用core js的方式 指定按需加载
                                        "userBuiltIns":"usage"

                                    }
                                ]
                            ]
                        }
                    },
                    "ts-loader",
                ]
               
            }
        ],

    }

}

在output配置对象里配置如下指令,防止刚开始打包成箭头函数,兼容IE等老版本浏览器(虽然IE已经没了)

//告诉webpack不适用箭头
environment: {
    arrowFunction: false
}

注:最终的webpack.config.js文件内容

//引入一个包
const path=require('path')

//引入html-webpack-plugin
const HTMLWebPackPlugin =require('html-webpack-plugin')
//引入clean插件
const {CleanWebPackPlugin}=require('clean-webpack-plugin')

//webpack的所有配置信息都应该写在module.exports里边
module.exports={
    //指定入口文件
    entry: "./src/index.ts",
    //指定打包文件的目录
    output: {
        //指定打包文件的目录
        path: path.resolve(__dirname,'dist'),
        //指定打包后的文件名字
        filename: "bundle.js",
        //告诉webpack不适用箭头
        environment: {
            arrowFunction: false
        }
    },
    //指定webpack打包时要使用的模块
    module: {
        //指定加载的规则
        rules: [
            {
                //test指的时规定生效的文件
                test:/\.ts$/,
                //指定要使用的loader
                use:[
                    //配置babel
                    {
                       //指明loader
                        loader: "babel-loader",
                        //设置babel
                        options: {
                            //设置预定义的环境
                            presets:[
                                [
                                    //指明环境的插件
                                    "@babel/preset-env",
                                    //配置信息
                                    {
                                        //指明要兼容的浏览器
                                        targets:{
                                            "chrome":"88"
                                        },
                                        //指定core js的版本
                                        "corejs":"3",
                                        //使用core js的方式 指定按需加载
                                        "userBuiltIns":"usage"

                                    }
                                ]
                            ]
                        }
                    },
                    "ts-loader",
                ],
                //要排除的文件
                exclude: /node_modules/
            }
        ],

    },
    plugins: [
            new HTMLWebPackPlugin({
                title: "你需要生成网页的标题",
                template: "你要参照生成HTML的模板"
            }),
            new CleanWebPackPlugin()
    ],
    //用来设置引用模块,表明以ts结尾的和以js结尾的可以当做模块引用
    resolve: {
        extensions: ['.ts','.js']
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript入门到入土(3)webpack打包ts代码 的相关文章

  • sumo生成随机车流

    在安装好sumo后 xff0c 生成模拟道路及模拟随机车辆 xff1a 主要参考链接 xff1a https blog csdn net qq 44045364 article details 102912041 以下对于该链接的内容进行一
  • 49天精通Java,第11天,java接口和抽象类的异同,default关键字

    目录 一 什么是接口 二 接口的特点 三 接口和类的区别 四 接口和抽象类的区别 五 接口的声明方式 六 default默认方法 大家好 我是哪吒 一 什么是接口 Java接口是一系列方法的声明 是一些方法特征的集合 一个接口只有方法的特征
  • 解决150%分辨率下拉框错位和echarts鼠标移入焦点错位的问题

    解决150 分辨率下拉框错位和echarts鼠标移入焦点错位的问题 当我们在前端开发的过程中 xff0c 可能会被要求适配主流分辨率 当我们把电脑分辨率调成150 的时候 xff0c 一些下拉框会发生错位现象 xff0c echarts图标
  • 互联网公司面试五大禁忌

    互联网这几年成为求职者追求的热门行业 xff0c 薪水也是水涨船高 xff0c 想要进入这个行业的人也是越来越多了 xff0c 本文给大家讲述一下互联网公司面试的五大禁忌 一 互联网公司HR最不想听到的离职原因 1 无意中泄漏公司机密而被辞
  • 真实面试经历:十面阿里,七面头条,六个Offer

    这是一篇很好的面试经验 xff0c 转载过来 xff0c 希望各位小伙伴可以借鉴 01 面试者背景简介 双非末流一本 xff0c 大三 xff0c CS xff08 计算机科学 xff09 专业 xff0c 有百度实习经历 02 面试情况
  • 程序员之歌:我是一个程序员

    工作一天 xff0c 来一起唱首歌缓解疲劳吧猿媛们
  • 如何准备校招技术面试+一只小菜鸟的面试之路

    校 招一路走来很幸运 xff0c 从最初的迷茫 xff0c 到偶尔的被否认 xff0c 然后慢慢调整心态 xff0c 有缺憾才能有进步 xff0c 正视的自己不足 xff0c 静下心努力提高 xff0c 勇敢尝试各种面试机会 xff0c 因
  • 获取对象属性值的两种方式

    获取对象属性值的方式有两种 xff1a 点 括号 span class token keyword let span obj span class token operator 61 span span class token punctu
  • 5 分钟,教你用 Docker 部署一个 Python 应用!

    在使用传统物理机或云服务器上部署项目都会存在一些痛点 比如 xff1a 项目部署速度慢 资源浪费 迁移难且扩展低 而使用 Docker 部署项目的优势包含 xff1a 高效利用系统资源 服务启动更快 环境一致 xff0c 迁移更加方便 本篇
  • nginx SSL证书

    SSL证书 什么是SSL证书 SSL xff08 Secure Sockets Layer xff09 证书是数字证书的一种 xff0c 类似于驾驶证 护照和营业执照的电子副本 因为配置在服务器上 xff0c 也称为SSL服务器证书 SSL
  • NX搭载Wecat载版SD卡

    写这篇文章原因是 xff1a 1是看官网的文档太长了 xff0c 二是确实想偷懒直接csdn登陆然后复制粘贴就好了 xff0c 三是文档确实很多坑 xff0c 四是实验室刷机电脑跑着个人实在是苔藓了 xff0c 别人盯着有不太好意思玩电脑
  • ROS学习第五天 ROS常用的组件库(一)——TF

    题外话 xff1a 首先给大家道个歉 xff0c 因为之前迷上了无人驾驶apollo仿真 xff0c 花了一段时间研究 后来发现没有资源 xff0c 没有设备 xff0c 是真的难学 xff0c 所以放弃了apollo 最近又到了开题答辩时
  • mysql数据库基础知识,mysql数据库简介(一看就懂,一学就会)

    目录 一 MySQL学习路线二 MySQL常见操作1 查看所有数据库show databases 2 MySQL 创建数据库3 删除数据库4 选择数据库use databasename5 查看该数据库下所有表show tables6 创建数
  • 账号和权限管理

    用户 xff1a 超级用户 xff1a uid gid为0 xff0c 超级用户是系统管理员 xff0c 具备系统最高权限 程序用户 xff1a 每个程序在创建时会自动创建一个程序用户 xff0c uid gid为1到999 xff0c 一
  • 科班程序员逆袭为渗透测试工程师的坎坷路(第一篇)

    渗透测试工程师 1 什么是渗透测试 渗透测试 xff08 penetration test xff09 事实上并没有一个标准的定义 xff0c 在国外的大部分安全组织达成的统一说法是 xff1a 渗透测试是通过模拟恶意黑客的攻击方法 xff
  • 《对抗攻击与防御分类方法综述》阅读笔记20220401

    对抗攻击与防御分类方法综述 A Review of Adversarial Attack and Defense for Classification Methods DOI 10 1080 00031305 2021 2006781 文章
  • Docker Desktop功能讲解

    2013 年发布至今 xff0c Docker 一直广受瞩目 xff0c 被认为可能会改变软件行业 概述 许多人并不清楚 Docker 到底是什么 xff0c 要解决什么问题 xff0c 好处又在哪里 xff1f 本文就来详细解释 xff0
  • rman备份报RMAN-00571、RMAN-00569、RMAN-03009

    rman备份时报错信息 xff1a RMAN 03009 failure of backup command on ORA DISK 1 channel at 07 03 2012 10 35 17 ORA 19809 limit exce
  • Scrapy-自动爬虫

    在前面几篇博文当中 xff0c 我们使用Scrapy框架编写的爬虫项目 xff0c 只能爬取起始网址中设置的网页 有时候 xff0c 我们需要让爬虫持续不断的自动爬取多个网页 xff0c 此时 xff0c 我们需要编写自动爬取网页的爬虫 在
  • Scrapy-连接数据库

    通过前面几篇文章的学习 xff0c 我们已经能够使用Scrapy框架写出一些常见的网络爬虫 在本章中 xff0c 我们将使用Scrapy框架 xff0c 将爬取到的数据存储到数据库中 与将数据写入文件一样 xff0c 写入到数据库中也是通过

随机推荐

  • Scrapy-请求和响应

    Scrapy使用Request和Response对象来爬行网站 通常 xff0c Request对象是在爬虫中生成的 xff0c 并在整个系统中传递 xff0c 直到它们到达下载器 xff0c 后者执行请求并返回一个Response对象 x
  • MySQL ERROR 1698 (28000) 错误

    之前MySQL服务端本机上使用密码登陆root账号是没有问题的 xff0c 但是今天不知道是因为动了哪里 xff0c 登陆失败并有这个错误代码 xff1a mysql u root p Enter password ERROR 1698 2
  • Gunicorn-配置详解

    在之前的文章中有记录WSGI容器的作用 xff0c 以及我们知道常见的容器就只有的uWSGI和Gunicorn xff0c 在之前的文章中有记录他们的特性及优缺点 xff0c 在这就不在多做描述 接下来将着重记录一下Gunicorn的一些配
  • YOLOv7升级换代:EfficientNet骨干网络助力更精准目标检测

    目录 一 EfficientNet骨干网络1 EfficientNet架构2 EfficientNet在目标检测中的应用3 EfficientNet分辨率的缩放4 EfficientNet深度与宽度的缩放 二 YOLOv7结构1 YOLOv
  • Python-获取图片的大小

    了解过Pillow的都知道 xff0c Pillow是一个非常强大的图片处理器 xff0c 这篇文章主要记录一下Pillow对图片信息的获取 xff1a 安装Pillow pip span class hljs keyword instal
  • lsnrctl command not found

    在linux安装完oracle时 当你遇到lsnrctl command not found等问题都不能用时 会有几种情况 1 首先你先查看下环境变量里面有没有加入oracle的配置 执行 echo ORACLE HOME 没有的话 你执行
  • Ubuntu 18.04-安装图文教程

    Ubuntu xff08 友帮拓 优般图 乌班图 xff09 是一个以桌面应用为主的开源GNU Linux操作系统 xff0c Ubuntu 是基于Debian GNU Linux xff0c 支持x86 amd64 xff08 即x64
  • Docker-DockerFile的使用

    在使用DockerFile定制镜像之前 xff0c 我们先来了解一下镜像的构成 xff1a 镜像是容器的基础 xff0c 每次执行docker run命令的时候都会指定哪个镜像作为容器运行的基础 在之前的栗子中 xff0c 我们使用的镜像都
  • Python-标准库calendar的使用

    此模块允许你输出类似Unix cal程序的日历 xff0c 并提供与日历相关的其他有用功能 值得注意的是 xff0c 默认情况下 xff0c 这些日历将星期一作为一周的第一天 xff0c 将星期日作为一周的最后一天 欧洲惯例 不过 xff0
  • Docker MySql报2059错误: Authentication plugin 'caching_sha2_password' cannot be loaded

    最近在使用Docker安装和配置MySql xff0c 按照正常的步骤来安装和配置MySQL xff0c 可配置完成后登录MySQL客户端出现了2059错误 xff0c 于是上各种博客 技术论坛寻求相关的问题解决办法 xff0c 可是仍然找
  • 套接字与文件

    在Linux中 xff0c 所有套接字都是文件 xff0c 操作系统并不区分套接字和文件 xff0c 因此对二者可以使用相同的读写函数
  • MySQL中find_in_set函数的使用

    1 语法 FIND IN SET str strlist xff08 1 xff09 str 要查询的字符串 xff08 2 xff09 strlist 字段名 xff1b 参数以 分隔 如 1 2 6 8 查询字段 strlist 中包含
  • C文件创建并写入文件

    创建并写入文件 u003Cstdio h gt nint main n n t 创建一个名为data txt的文件 n tFILE pFile 61 fopen 34 data txt 34 34 w 34 n tif pFile 61 6
  • 关于海康摄像头的摘要认证

    最近在做一个项目时候要用到摄像头人脸抓拍 xff0c 人脸识别等功能 xff0c 原本使用海康的SDK就可以解决的 xff0c 但是我们项目是在arm平台下开发的 xff0c 而海康的SDK不支持arm平台 xff0c 无奈联系的海康的技术
  • 华为OD机试真题2023(JAVA)

    目录 华为OD机试是什么 xff1f 华为OD面试流程 xff1f 华为OD机试通过率高吗 xff1f 华为OD薪资待遇 xff1f 华为OD晋升空间 xff1f 大家好 xff0c 我是哪吒 本专栏包含了最新最全的华为OD机试真题 xff
  • ARM的快速上下文切换(FCSE)

    一 FCSE的原理 通常情况下 xff0c 如果两个进程占用的虚拟地址空间由重叠 xff0c 系统在这两个进程之间进行切换时 xff0c 必须进行虚拟地址到物理地址的重映射 而虚拟地址到物理地址的重映射涉及到重建MMU中的页表 xff0c
  • 使用PyQt5/PySide2编写一个极简的音乐播放器

    文章目录 一 创建UI界面二 获取网络歌曲三 创建和链接信号槽 疫情肆虐 xff0c 憋在家实在无聊 xff0c 索性写点东西 xff0c 于是就有了这个极极极极极简的音乐播放器 这个极极极简的音乐播放器类似于 阅后即焚 的软件 xff0c
  • Android zxing二维码扫描 扫描框适应各种分辨率

    public synchronized Rect getFramingRect if framingRect 61 61 null if camera 61 61 null return null Point screenResolutio
  • 实战:MySQL Sending data导致查询很慢的问题详细分析

    这两天帮忙定位一个mysql查询很慢的问题 xff0c 定位过程综合各种方法 理论 工具 xff0c 很有代表性 xff0c 分享给大家作为新年礼物 xff1a xff09 问题现象 使用sphinx支持倒排索引 xff0c 但sphinx
  • TypeScript入门到入土(3)webpack打包ts代码

    上一节我们讲了ts的编译选项 xff0c 这一节我们介绍利用webpack打包我们的ts代码 前文链接 xff1a TypeScript入门到入土 xff08 2 xff09 小杨爱编程的博客 CSDN博客 ts 的安装以及ts中类型 xf