构建工具tsup入门第三部分

news2024/11/26 12:50:37

🎄Hi~ 大家好,我是小鑫同学,一位长期从事前端开发的编程爱好者,我将使用更为实用的案例输出更多的编程知识,同时我信奉分享是成长的唯一捷径,在这里也希望我的每一篇文章都能成为你技术落地的参考~

目录

      • 🚀技术&代码分享
      • 😇推荐几个好用的工具
      • 进入正题
      • 1. 监听模式
      • 2. 注入垫片
      • 3. 拷贝资产目录
      • 4. 编译时环境变量
      • 总结

🚀技术&代码分享

  • 我在 IT200 总结技术学习;
  • 我在 1024Code 在线编写代码;
  • 我在 掘金 分享技术文章;
  • 我在 Github 参与开源学习;

😇推荐几个好用的工具

  • var-conv 适用于VSCode IDE的代码变量名称快速转换工具
  • generator-vite-plugin 快速生成Vite插件模板项目
  • generator-babel-plugin 快速生成Babel插件模板项目

进入正题

tsup 是一个基于 ESBuild 实现在零配置的情况下快速捆绑 Typescript 模块的项目,在构建 CLI类 项目时可以优先考虑采用。

完整大纲

在这一节中你将了解 tsup 中一些较为高级的用法,如:监听模式的使用及规则、垫片的注入、资产目录拷贝以及编译时环境变量的控制。

1. 监听模式

监听模式可以通过一次启动后持续监听源码的变化,实时进行编译,在各个构建工具中都是必要的一个功能。在默认情况下 tsup 将排除项目中的 distnode_modules & .git 目录,因为这些目录都不属于我们自己开发的源码。如果你还使用到了一些并不需要编译的目录中的文件,那么可以通过 --ignore-watch 进行标记,这样 tsup 将不监听被标记的文件夹的内容。

  • 启用监听模式:
cd code01 && npx tsup index.ts --watch

  • 忽略不需要监听的文件夹:
cd code01 && npx tsup index.ts --watch --ignore-watch assets --ignore-watch public

PS:通过终端提示已经成功开启监听模式,并且新增的忽略文件夹也已经被读取到,这样每次源码变动后dist目录中的内容将保持实时编译的结果了。代码参照1024Code中的code01部分;

2. 注入垫片

这里的注入垫片并非是语法降级时的处理,而是需要抹平 cjsmjs 两种模块化方案中不同实现,比如说在读取文件前要获取文件路径,那么在 cjs 中就需要用到 __dirnamemjs 则需要用到 import.meta.url,在不开启注入垫片时编译后的代码将无法正常工作。

  • 开启注入垫片方式:
npx tsup index.js --format esm --shims

// or

import { defineConfig } from 'tsup'

export default defineConfig({
  shims: true,
})
  • 未开启垫片注入:

  • 已开启垫片注入:

PS:代码参照1024Code中的code02部分;

3. 拷贝资产目录

对于项目中不需要参与编译及处理的文件通过统一管理的方式在源码编译后 copydist 文件夹中与其它编译结果共同组合成完整可运行的项目。

  • 运行编译命令:
cd code03 && npx tsup index.ts --publicDir ./public
  • 编译前目录结构
code03
├─ public
│  └─ index.html
└─ index.ts
  • 编译后目录结构
code03
├─ dist
│  ├─ dist
│  │  ├─ index.html
│  │  └─ index.js
├─ public
│  └─ index.html
└─ index.ts
  • 预览结果
cd dist && npx serve -p 8080

PS:代码参照1024Code中的code03部分;

4. 编译时环境变量

在编译时通过环境变量来控制不同方案的编译选项,还以已压缩代码的示例来操作:

  • 配置文件:
import { defineConfig } from 'tsup'

export default defineConfig((options) => {
  const { NODE_ENV } = options.env;
  return {
    entry: ["index.tsx"],
  	minify: NODE_ENV === 'production',
  }
})
  • 在终端指定环境标识
cd code04 && npx tsup --env.NODE_ENV production

PS:代码参照1024Code中的code04部分;

总结

这一节的内容就到此结束了,源码及一些简单的配置就不贴了,可以访问每个小节给出的地址查看,tsup 还剩最后一点知识就基本结束了,下一小节见~


如果看完觉得有收获,欢迎点赞、评论、分享支持一下。你的支持和肯定,是我坚持写作的动力~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“慌不择路”周鸿祎,昔日大炮忙跟风【短评】

文|智能相对论作者| 凯文2月7日下午360经历两次急速拉升后涨停了,作为一个被套牢的股民,我是羡慕的,但理智告诉我,360的后续难以为继。360涨停的原因很简单,只因其在投资者互动平台上对类ChatGPT技术的布局做出了回应&…

安装Sentinel控制台与初始化演示工程

目录 一、Sentinel 二、安装Sentinel控制台 (一)sentinel组件由2部分构成 (二)安装步骤 三、初始化演示工程 四、流控模式 (一)快速失败 (二)关联资源 (三&…

第四章——随机变量的数字特征

文章目录1、数字特征的定义2、数学期望(均值)2.1、数学期望的定义及性质2.1.1、定义2.1.2、性质2.2、数学期望相关例题2.3、Yg(X)的数学期望2.4、Zg(X,Y)的数学期望2.5、随机变量函数的数学期望例题3、方差3.1、方差的定义与性质3.2、相关例题3.3、切比雪…

3.2 埃尔米特转置

定义 对于复矩阵,转置又不一样,常见的操作是共轭转置,也叫埃尔米特转置Hermitian transpose。埃尔米特转置就是对矩阵先共轭,再转置,一般来说用三种符号表示埃尔米特转置: 第一种符号是AHA^HAH&#xff0c…

热门盘点 | 10款评分最高的项目管理工具

项目管理软件可以让项目经理及时掌握项目进展可把复杂的任务分解简单帮助项目经理及时了解整个团队进展随着现代项目需求日趋复杂和个性选一个好的项目管理软件还是很有必要的① PingCode国内研发项目管理软件PingCode,它是国内软件研发项目榜单中评分最高的项目管理…

达梦实现高可用性的实现(failover功能/负载均衡/虚拟ip透明切换)

达梦实现高可用性的实现(failover功能/负载均衡/虚拟ip透明切换)一:failover功能:基于守护进程和监视器两个内在工具实现守护进程监视器:数据守护和读写分离集群共享存储集群二:负载均衡:基于jd…

在线支付系列【22】微信支付实战篇之集成服务商API

有道无术,术尚可求,有术无道,止于术。 文章目录前言1. 环境搭建2. 特约商户进件3. 统一下单总结前言 在上篇文档中,我们做好了接入前准备工作,接下来使用开源框架集成服务商相关API。 一个简单的支付系统完成支付流程…

火爆全网的ChatGPT使用教程

最近,大家有没有被ChatGPT所刷屏呢?记得之前元宇宙刚出来的时候,也是极其火爆,虽说这二者是不同的性质,但是都是代表着当下互联网发展之迅速。 一、什么是ChatGPT 百度百科中给出的解释:ChatGPT&#xff0…

【Explain详解与索引优化最佳实践】

摘要 explain命令是查看MySQL查询优化器如何执行查询的主要方法,可以很好的分析SQL语句的执行情况。每当遇到执行慢(在业务角度)的SQL,都可以使用explain检查SQL的执行情况,并根据explain的结果相应的去调优SQL等。 …

LabVIEW中加载.NET 2.0,3.0和3.5程序集

LabVIEW中加载.NET 2.0,3.0和3.5程序集已使用.NETFramework 2.0,3.0或3.5创建了.NET程序集,但是当尝试在构造函数节点中加载这些程序集时,却收到LabVIEW消息显示: 所选文件不是.NET程序集,所属类型库或自动化可执行文件。所以想确认是否可以在…

多线程环境下的伪共享

今天和大家聊一聊伪共享 1.什么是伪共享? 缓存一致性协议在计算机中针对的最小单元:缓存行,每个缓存行的大小是64字节,一串连续的64字节数据都会存储到缓存行中。 假设数据A和数据B在同一缓存行中,CPU1修改了数据A&am…

你每天所做的工作,让你产生了成就感吗?

我们是为了什么而工作?金钱?理想?生活? 似乎这一切都没有标准答案,你自己问你自己,问问你自己,每天踏入公司,坐到工位面前,你最真实的感受是什么? “成就感…

OpenHarmony 3.2 Beta多媒体系列——视频录制

一、简介媒体子系统为开发者提供了媒体相关的很多功能,本文针对其中的视频录制功能做个详细的介绍。首先,我将通过媒体子系统提供的视频录制Test代码作为切入点,给大家梳理一下整个录制的流程。二、目录foundation/multimedia/camera_framewo…

今天面了个字节拿 38K 出来的测试,让我见识到了基础的天花板

前言 人人都有大厂梦,对于软件测试人员来说,BAT 为首的一线互联网公司肯定是自己的心仪对象,毕竟能到这些大厂工作,不仅薪资高待遇好,而且能力技术都能够得到提升,最关键的是还能够给自己镀上一层金&#…

webpack新手入门

前言: 如何配置webpack呢? webpack概念有哪些呢? 怎么快速理解并使用webpack呢? 文章目录一. 什么是webpack二. 安装webpack三. webpack的五个核心概念四. webpack配置五. loader加载器1. css处理2. 处理文件(图片&…

内网渗透(十二)之内网信息收集-内网端口扫描和发现

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

FOXCONN的第一天 记录 转型的前奏

2023年春,我来到美丽富饶的威海小城,开始了我的foxconn之旅,刚毕业那阵来过之后,再一次参与这个价值10个亿的项目,首先要致敬郭老板,好久不见。然后致敬一下曾经的工友们,再次致敬一下逝去的SAP…

2023年全国数据治理DAMA-CDGA/CDGP考试报名到弘博创新

弘博创新是DAMA中国授权的数据治理人才培养基地,贴合市场需求定制教学体系,采用行业资深名师授课,理论与实践案例相结合,快速全面提升个人/企业数据治理专业知识与实践经验,通过考试还能获得数据专业领域证书。 DAMA认…

分布式高级篇4 —— 商城业务(2)

一、订单服务1、订单基本概念2、订单基本构成3、订单状态4、订单流程5、配置拦截器拦截订单请求6、订单确认页模型抽取7、订单确认页vo封装8、Feign 远程调用请求头丢失问题\*\*\*\*\* 惨痛教训9、Feign 异步调用请求头丢失问题10、查看库存状态11、模拟计算运费12、接口幂等性…

智能优化算法——粒子群优化算法(PSO)(小白也能看懂)

前言: 暑假期间,因科研需要,经常在论文中看到各种优化算法,所以自己学习了一些智能优化的算法,做了一些相关的纸质性笔记,寒假一看感觉又有点遗忘了,并且笔记不方便随时查看,所以希…