esBuild + SWC 构建 TS 项目

2023-12-20 18:30
文章标签 构建 项目 ts swc esbuild

本文主要是介绍esBuild + SWC 构建 TS 项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. esBuild 介绍

esbuild 的官方介绍中打包 threejs 只需要 0.37 秒
Esbuild 是一个非常新的模块打包工具,它提供了与 WebpackRollupParcel 等工具「相似」的资源打包能力,却有着高的离谱的性能优势:

在这里插入图片描述

esbuild 是 go 语言编写的并且是多线程执行,性能是 js 的好几十倍,所以很快。

  • 无需缓存即可实现基础打包
  • 支持 ES6 跟 CommonJS 模块
  • 支持 ES 6 Tree Shaking
  • 体积小
  • 插件化
  • 其他
  • 内置支持编译 jsx

2.SWC 介绍

swc 是用 rust 写的,所实现的功能跟 babel 一样,es6 语法转 es5,但是速度比 babel 更快,前端基建工具使用 rust 的是越来越多了,未来可能还会有一个替代 postCss

在这里插入图片描述

那如果把 esbuild + swc 结合起来构建那不是要起飞?

3. 需要安装的依赖

  1. npm install @swc/core 是 swc 的核心包,用于编译 JavaScript 和 TypeScript 代码

  2. npm install esbuild 是一个快速的 JavaScript 和 TypeScript 构建工具

  3. npm install ts-node 用来编译打包运行 ts-node-esm 命令

4. 搭建基础项目结构

在这里插入图片描述

  1. 使用 tsc --init 命令 生成 tsconfig.json 配置文件
    • 需要修改这三个命令,不让等会的 config.ts 配置打包的文件会语法报错 "target": "ESNext","module": "ESNext","moduleResolution": "Node",
  2. 使用 npm init 命令 生成 package.json 配置文件
    • 运行后会让你填写一些基础信息,直接yes跳过默认就行
    • 需要添加修改 "type": "module", 配置
  3. 配置基础打包命令,在 package.json 文件下的 scripts 添加运行指令 dev-esm:开发环境 后面我们会配置 config.ts 打包文件
"scripts": {"dev-esm": "npx ts-node-esm ./config.ts"
},
  1. 编写一个测试的 ts 语法文件;在 src 文件夹中新增 main.ts 文件,编写一些 ts 语法文件
export const a: number = 1;
export const b: string = "ikun";
let x = 1;
let fn = () => 123;
console.log(x, fn);

5. esBuild+SWC 基础配置

  1. 在根目录新建 config.js 文件 (这是最基本的)
import esbuild from "esbuild"; //打包工具
import swc from "@swc/core"; //类似于babel es6 转 es5
import fs from "node:fs";
await esbuild.build({entryPoints: ["./src/main.ts"], //入口文件bundle: true, //模块单独打包loader: {".js": "js",".ts": "ts",".jsx": "jsx",".tsx": "tsx",},treeShaking: true,define: {"process.env.NODE_ENV": '"production"',},plugins: [{//实现自定义loadername: "swc-loader",setup(build) {build.onLoad({ filter: /\.(js|ts|tsx|jsx)/ }, (args) => {// console.log(args);const content = fs.readFileSync(args.path, "utf-8");const { code } = swc.transformSync(content, {filename: args.path,});return {contents: code,};});},},],outdir: "dist",
});

6. 运行打包

  1. 执行 npm run dev-esm 运行即可,可以看到已经编译完成,并且通过 swc 转换为了 es5 语法文件

在这里插入图片描述

7. esBuild+SWC 高级用法

除了上述基本用法之外,swc 和 esbuild 还提供了许多高级用法,可以更好地满足我们的构建需求。具体使用可以去官网看着配置试下吧

1. 插件系统

swc 和 esbuild 都提供了插件系统,可以通过插件来扩展其功能。例如,swc 的插件可以用于优化代码,提高性能。esbuild 的插件则可以用于处理特定类型的文件,或自定义转换规则。

2. 缓存系统

swc 和 esbuild 都提供了缓存系统,可以减少重复编译时间。当文件内容没有发生变化时,swc 和 esbuild 会从缓存中读取已编译的代码,以提高构建速度。

3. Watch 模式

swc 和 esbuild 都支持 Watch 模式,可以在文件发生变化时自动重新编译代码。Watch 模式可以减少手动运行构建命令的频率,提高开发效率。

4. 自定义插件

最后,我们可以通过编写自定义插件来扩展 swc 和 esbuild 的功能。例如,可以编写一个插件来自动引入 CSS 文件,或者优化 JavaScript 代码。自定义插件可以根据实际需求进行编写,以更好地满足项目的构建需求。

5. 总结

本文介绍了如何使用 swc 和 esbuild 来构建一个简单的 TypeScript 应用程序,并讨论了一些高级用法。swc 和 esbuild 都是现代前端构建工具中的代表,它们都提供了快速编译、代码压缩等功能,可以有效提高应用程序的性能。通过学习 swc 和 esbuild 的使用方法,我们可以更好地进行前端工程化开发,提高开发效率和代码质量。

这篇关于esBuild + SWC 构建 TS 项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/517033

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

SpringBoot项目是如何启动

启动步骤 概念 运行main方法,初始化SpringApplication 从spring.factories读取listener ApplicationContentInitializer运行run方法读取环境变量,配置信息创建SpringApplication上下文预初始化上下文,将启动类作为配置类进行读取调用 refresh 加载 IOC容器,加载所有的自动配置类,创建容器在这个过程

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor