使用webpack打包ts代码

通常情况下,实际开发中需要使用构建工具对代码进行打包,TS也可以结合构建工具进行使用,以webpack为例,介绍如何结合构建工具使用TS。

基本功能实现步骤:

  • 项目初始化,生成package.json:npm init -y

  • 下载构建工具

安装使用webpack时需要的依赖:cnpm i -D webpack webpack-cli typescript ts-loader

  • 新建webpack的配置文件webpack.config.js

webpack.config.js:

const path = require("path")  //引入一个包,node.js的一个模块,主要用来帮助拼接路径

// webpack中所有的配置信息都应该写再module.exports中

module.exports = {

        //指定入口文件,等于程序中的主文件

        entry:"./src/index.js" ,

        //指定打包完成的文件所在的目录

        output:{ 

                //指定打包后的文件目录

                path:path.resolve(__dirname,"dist"),  // 直接在原有path后面拼接

                //打包后的文件的名称

                filename:"bundle.js", 

         },

        // 指定webpack打包时要使用的模块

        module:{

                //指定loader加载的规则

                rules:[

                                {

                                        // test 指定规则生效的文件

                                       test:/\.ts$/, // 表示匹配所有的以 .ts 结尾的文件,即所有的ts文件

                                        // use指定要使用的loader

                                       use:"ts-loader", // use指定要使用的loader

                                        //excludes指定要排除的文件夹

                                        excludes:/node-modules/, // 所有文件路径中有node-modules的文件都排除, 即排除node-modules下所有文件。

                                }

                ]

        }

}

  • 新建ts的配置文件tsconfig.json

tsconfig.json:

{

        // 简单写一下,内容可更改

        "compilerOptions":{

                "modules":"ES2015",

                "target":"ES2015",

                "script":true,

        }

}

  • 在package.json文件中添加属性:"build":"webpack",可以通过build命令直接执行webpack

package.json:

  • 在终端npm run build来执行打包。

打包成功:

webpack在ts中的插件

生成html文件插件:html-webpack-plugin

安装插件:cnpm i -D html-webpack-plugin

有助于生成html文件,命令完成后,在package.json中多出配置选项

需要对webpack.config.js进行配置

首先,需要引入插件

const path = require("path") 

//引入html插件

const HTMLWebpackPlugin = require( "html-webpack-plugin" )

module.exports = {

        entry:"./src/index.js" ,

        output:{ 

                path:path.resolve(__dirname,"dist"), 

                filename:"bundle.js", 

         },

        module:{

                rules:[

                                {

                                       test:/\.ts$/,

                                       use:"ts-loader",

                                        excludes:/node-modules/,

                                }

                ]

        },

        //配置webpack插件

        plugin:{

                new HTMLWebpackPlugin(), // 效果自动生成html文件,并且自动引入相关资源

                // 也可以对生成的html进行自定义

                 new HTMLWebpackPlugin(options:{

                        title:"这是一个自定义的title",

                } ),

                // 也可以根据自定义html模板生成html文件

 

                 new HTMLWebpackPlugin(options:{

                        template:"./src/index.html", //html模板文件位置

                } ),

        }

}

webpack开发服务器插件:webpack-dev-server

安装插件:cnpm i -D webpack-dev-server

webpack开发的服务器插件,相当于在项目中安装了一个内置的服务器,项目可以直接在这个服务器运行,这个服务器和webpack是直接相关联的,可以根据项目的改变自动刷新。

手动添加package.json配置文件内容:"start":"webpack serve --open chrome.exe"\

表示启用webpack服务器并且用chrome打开网页

终端:npm start 启动服务器,并且能自动打开网页

清除dist目录插件:clean-webpack-plugin

安装插件:cnmp i -D clean-webpack-plugin

每次编译前,将dict目标目录先清空再把新文件放进去,确保现在目标文件夹下的文件都是最新的,避免有旧文件出现的情况。

const path = require("path") 

const HTMLWebpackPlugin = require( "html-webpack-plugin" )

//引入clean插件

const {CleanWebpackPlugin }= require( "clean-webpack-plugin" )

module.exports = {

        entry:"./src/index.js" ,

        output:{ 

                path:path.resolve(__dirname,"dist"), 

                filename:"bundle.js", 

         },

        module:{

                rules:[

                                {

                                       test:/\.ts$/,

                                       use:"ts-loader",

                                        excludes:/node-modules/,

                                }

                ]

        },

        //配置webpack插件

        plugin:{

                new HTMLWebpackPlugin(),

                new CleanWebpackPlugin(),

        },

        //用来设置引用模块

        resolve:{ //必需的

                extensions:['.ts','.js']  //凡是以.ts、.js结尾的文件都可以作为模块使用

        }

}

Babel

使用流程

下载安装

安装babel:cnpm i -D @babel/core @babel/preset-env babel-loader core-js

@babel/preset-env预置环境,必要的;core-js模拟js运行环境的代码,提高兼容性

package.json自动生成属性:

修改配置文件

配置依赖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/453543.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汉诺塔问题代码写法的详细解析

汉诺塔游戏规则: 规则: 汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着…

自动化运维工具 ---------------Ansible

一、Ansible 发展史及功能 作者:Michael DeHaan( Cobbler pxe kikstar 与 Func 作者)ansible 的名称来自科幻小说《安德的游戏》中跨越时空的即时通信工具,使用它可以在相距数光年的距离,远程实时控制前线的舰队战斗2…

Linux:好用的Linux指令

进程的Linux指令 1.查看进程信息 ​​​​ps ajx | head -1 && ps ajx | grep 进程名创建一个进程后输入上述代码,会打印进程信息,当我们在code.exe中写入打印pid,ppid,这里也和进程信息一致。 while :; do ps ajx | he…

探索:C++继承中虚表与虚基表的内存存储

探讨:菱形虚拟继承的虚基表和虚表 在继承和多态里,总是能听到虚表、虚基表这样的词汇,没有洞悉其根本的人很容易将它们混淆,因此,我们对这两个“虚”“表”进行实践,来更好地理解它们。 通俗些说&#xf…

AI新工具(20240313) 世界上第一个完全自主的AI软件工程师Devin 已经开始接外包了;又一个开源本地知识库问答系统

1: Cognition AI Devin 世界上第一个完全自主的AI软件工程师Devin 已经开始接外包了 Devin是世界上第一个完全自主的AI软件工程师,具备长期推理和规划的能力,能够执行复杂的工程任务,包括学习、修复错误、与用户实时合作等。Devin可以学习并…

Vue Slot插槽:组件化的艺术

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

前端面试题汇总

基础面试题 1.new 操作符做了那些事 function Fun(name){this.name name } Fun.prototype.sayHi funtion(){console.log(this.name) }function mockCreate(fn, ...args){let obj Object.create({}) // 创建一个空对象Object.setPrototypeOf(obj, fn.prototype) // 空对象…

基于LIO-SAM 算法的三维激光SLAM 建图

运行环境 Linux:Ubuntu18.04ros:MelodicCeres Solver 2.0.0(Ubuntu18.04安装Ceres)PCL 1.8.1(Ubuntu系统的PCL、Eigen卸载和安装)gtsam-4.0.0-alpha2 或者 4.0.2 1 背景介绍 在自动驾驶的感知方案中&…

c语言之汉诺塔的实现

思路 汉诺塔问题就是有三个盘子,让我们把其中一个盘子上的东西全移到另一个盘子上,注意的是中途必须满足大东西必须在小东西下面。 这里,我们有A B C三个盘子,假如A上有一个珠子,那我们直接把这一个移到C上就可以&am…

Python和Tensorboard的下载和安装

Python和Tensorboard的下载和安装 Python的下载和安装Python下载Python安装测试Python Tensorboard的下载和安装Tensorboard 简介Tensorboard下载Tensorboard使用urllib3报错 Python的下载和安装 Python下载 Python官方下载链接:https://www.python.org/downloads…

2024年3月11日 算法刷题记录

2024年3月11日 习题 2.4 Repeater(北京大学复试上机题) 链接 题目大意 给你一个仅包含一种字符和空格的模板,模板显示如何创建无尽的图片,将字符用作基本元素并将它们放在正确的位置以形成更大的模板,然后不断进行…

Windows C++ 使用WinAPI实现RPC

demo下载地址:https://download.csdn.net/download/2403_83063732/88958730 1、创建IDL文件以及acf文件(创建helloworld.idl helloworld.acf) 其中IDL文件: import "oaidl.idl"; import "ocidl.idl"; [ …

AI日报:一个新的“科技超级周期”正在出现

文章目录 技术周期预测可连接设备 技术周期 未来学家艾米韦伯表示,人工智能和其他两种通用技术将迎来一个新的“技术超级周期”,预计将在经济中创造“实质性和持续性”的变化。 她在SXSW 2024上表示,过去的科技超级周期是由通用技术引发的&…

鸿蒙开发之快速入门

一:下载开发工具 鸿蒙的开发工具叫DevEco 下载点击 其他部分都一直next 就行,这个页面出现的install 建议都点击install 然后单独选择安装目录 可能存在的问题 就是之前安装nodejs(比如自己开发web或者RN等情况)版本低 等情况 所以建议你单独安装一次 …

【数学】【C++算法】780. 到达终点

作者推荐 视频算法专题 本文涉及知识点 数学 LeetCode780. 到达终点 给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。 从点 (x, y) 可以转换到 (x…

Go语言中的锁与管道的运用

目录 1.前言 2.锁解决方案 3.管道解决方案 4.总结 1.前言 在写H5小游戏的时候,由于需要对多个WebSocket连接进行增、删、查的管理和对已经建立连接的WebSocket通过服务端进行游戏数据交换的需求。于是定义了一个全局的map集合进行连接的管理,让所有…

Netty架构详解

文章目录 概述整体结构Netty的核心组件逻辑架构BootStrap & ServerBootStrapChannelPipelineFuture、回调和 ChannelHandler选择器、事件和 EventLoopChannelHandler的各种ChannelInitializer类图 Protocol Support 协议支持层Transport Service 传输服务层Core 核心层模块…

操作系统内功篇:硬件结构之CPU是如何运行的?

本文分5个小结,分别是图灵机工作方式,冯诺依曼结构,总线线路位宽和CPU位宽,程序执行的基本过程, a12的具体执行过程。 一 图灵机的工作方式 图灵机由纸带,读写头组成。读写头上有一些部件例:存储单元&#…

嵌入式驱动学习第三周——linux内核链表

前言 在 Linux 内核中使用最多的数据结构就是链表了,其中就包含了许多高级思想。 比如面向对象、类似C模板的实现、堆和栈的实现。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博…

智能指针的讲解

1.为什么要智能指针 首先我们分析一段代码: 1、如果p1这里new 抛异常会如何? 2、如果p2这里new 抛异常会如何? 3、如果div调用这里又会抛异常会如何? int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_ar…