老规矩,小手动起来~点赞关注不迷路!
esbuild简单介绍
esbuild
为了突破了JavaScript
语言的瓶颈,采用了Go
语言编写,构建速度与同代码量下的webpack
对比提升在10
倍以上,开创了构建工具性能的新时代。
它的中文文档,本人正在不断的更新完善中,欢迎大家关注阅读!
Supported by: Build
Node
的模块解析算法支持一个名为NODE_PATH
的环境变量,该变量包含导入路径时要使用的全局目录列表。除了所有父目录中的node_modules
目录之外,还会在这些路径中搜索package
。您可以使用带有CLI
的环境变量,并使用带有JS
和Go API
的数组,将此目录列表传递给esbuild
:
NODE_PATH=someDir esbuild app.js --bundle --outfile=out.js
如果您正在使用CLI,并且希望使用NODE_PATH
传递多个目录,则必须使用以下命令来分隔它们,在Unix上使用:
,在Windows上使用;
。这与Node
本身使用的格式是相同的。
Supported by: Build
使用此设置可以从打包文件中排除包的所有依赖项。这在打包Node
时很有用,因为许多npm
包在打包时使用了esbuild
不支持的特定于node
的功能(如__dirname
、import.meta.url
、fs.readFileSync
和*.node
本机二进制模块)。使用它看起来是这样的:
esbuild app.js --bundle --packages=external
启用此选项会自动将所有看起来像npm
包的导入路径标记为外部路径(即,不以.
或..
路径开头且不是绝对路径的导入路径)。它与手动将每个依赖项传递给外部具有相同的效果,但更简洁。如果您想自定义哪些依赖项是外部的,哪些不是,那么您应该使用external
配置项而不是此配置。
请注意,此配置仅在启用bundle
时有效。还要注意,将导入路径标记为外部路径是发生在别名
重写后的,因此使用此设置时,别名功能仍然有效。
Supported by: Build
此设置是node
中--preserve-symlinks
配置的一个镜像。如果使用该设置(或Webpack中类似的resolve.symlinks设置),则可能也需要在esbuild
中启用此设置。它可以这样启用:
esbuild app.js --bundle --preserve-symlinks --outfile=out.js
启用此设置会导致esbuild
根据原始文件路径(即没有软链接的路径)而不是实际文件路径(如软链接之后的路径)来确定文件标识。这对于某些目录结构是有益的。请记住,这意味着如果有多个符号链接指向某个文件,则该文件可能会被赋予多个标识,这可能导致该文件在生成的输出文件中多次出现。
注意:术语symlinks
的symbolic link
的意思,是一个文件系统功能,其中一个路径可以重定向到另一个路径。
Supported by: Build
Node
使用的解析算法支持隐式文件扩展名。您可以使用require('./file')
,它将按此顺序进行检索:./file, ./file.js, ./file.json, ./file.node
。包括esbuild
在内的现代bundler
也将这一概念扩展到其他文件类型。esbuild
中隐式文件扩展名的完整顺序可以使用resolve extensions
进行自定义,默认为.tsx、.ts、.jsx、.js、.css、.json
:
esbuild app.js --bundle --resolve-extensions=.ts,.js
请注意,esbuild
是故意不在此列表中包含新的.mjs
和.cjs
扩展的。Node
的解析算法不会将这些文件扩展名视为隐式文件扩展名,所以esbuild
也不会。如果要导入具有这些扩展名的文件,则应在导入路径中显式添加扩展名,或者更改此配置来包含要隐式的其他扩展名。
Supported by: Build
此API
选项允许您指定用于构建的工作目录。它通常默认为用于调用esbuild
的API
的进程的当前工作目录。esbuild
将工作目录用于一些不同的事情,包括将作为API
选项提供的相对路径解析为绝对路径,以及在日志消息中将绝对路径打印为相对路径。以下是如何自定义esbuild的工作目录:
import * as esbuild from 'esbuild'
await esbuild.build({
entryPoints: ['file.js'],
absWorkingDir: '/var/tmp/custom/working/directory',
outfile: 'out.js',
})
注意:如果您使用的是Yarn Plug'n'Play
,请记住此工作目录用于搜索Yarn
的清单文件。如果从不相关的目录运行esbuild
,则必须将此工作目录设置为包含清单文件的目录(或其子目录之一),以便esbuild
找到清单文件。
笔者根据esbuild
文档搭建了一套简洁的ts
开发脚手架工程,编译速度非常快!脚手架还整合了eslint
,另一篇文章还附带了调试教程,需要的朋友看这里:esbuild配合vscode搭建的ts开发环境,这编译速度,真香
另外,esbuild中文文档专栏,本人目前正在翻译整理,关注我,有最新的翻译文档会第一时间通知你!
(本文完)
励志前端小黑哥,全网唯一账号!
关注我,带你了解更多前端知识!