esbuild中文文档-路径解析(Node paths、Packages、Preserve symlinks、Resolve extensions、Working directory)

文章目录

  • 路径解析配置项 Path resolution
    • 设置Node路径 Node paths
    • 依赖项配置 Packages
    • 保存软链接 Preserve symlinks
    • 扩展名解析配置 Resolve extensions
    • 工作目录 Working directory
  • 结语

哈喽,大家好!我是「励志前端小黑哥」,我带着最新发布的文章又来了!

老规矩,小手动起来~点赞关注不迷路!

esbuild简单介绍

esbuild为了突破了JavaScript语言的瓶颈,采用了Go语言编写,构建速度与同代码量下的webpack对比提升在10倍以上,开创了构建工具性能的新时代。

它的中文文档,本人正在不断的更新完善中,欢迎大家关注阅读!

路径解析配置项 Path resolution

设置Node路径 Node paths

Supported by: Build

Node的模块解析算法支持一个名为NODE_PATH的环境变量,该变量包含导入路径时要使用的全局目录列表。除了所有父目录中的node_modules目录之外,还会在这些路径中搜索package。您可以使用带有CLI的环境变量,并使用带有JSGo API的数组,将此目录列表传递给esbuild

NODE_PATH=someDir esbuild app.js --bundle --outfile=out.js

如果您正在使用CLI,并且希望使用NODE_PATH传递多个目录,则必须使用以下命令来分隔它们,在Unix上使用:,在Windows上使用;。这与Node本身使用的格式是相同的。

依赖项配置 Packages

Supported by: Build

使用此设置可以从打包文件中排除包的所有依赖项。这在打包Node时很有用,因为许多npm包在打包时使用了esbuild不支持的特定于node的功能(如__dirnameimport.meta.urlfs.readFileSync*.node本机二进制模块)。使用它看起来是这样的:

esbuild app.js --bundle --packages=external

启用此选项会自动将所有看起来像npm包的导入路径标记为外部路径(即,不以...路径开头且不是绝对路径的导入路径)。它与手动将每个依赖项传递给外部具有相同的效果,但更简洁。如果您想自定义哪些依赖项是外部的,哪些不是,那么您应该使用external配置项而不是此配置。

请注意,此配置仅在启用bundle时有效。还要注意,将导入路径标记为外部路径是发生在别名重写后的,因此使用此设置时,别名功能仍然有效。

保存软链接 Preserve symlinks

Supported by: Build

此设置是node--preserve-symlinks配置的一个镜像。如果使用该设置(或Webpack中类似的resolve.symlinks设置),则可能也需要在esbuild中启用此设置。它可以这样启用:

esbuild app.js --bundle --preserve-symlinks --outfile=out.js

启用此设置会导致esbuild根据原始文件路径(即没有软链接的路径)而不是实际文件路径(如软链接之后的路径)来确定文件标识。这对于某些目录结构是有益的。请记住,这意味着如果有多个符号链接指向某个文件,则该文件可能会被赋予多个标识,这可能导致该文件在生成的输出文件中多次出现。

注意:术语symlinkssymbolic link的意思,是一个文件系统功能,其中一个路径可以重定向到另一个路径。

扩展名解析配置 Resolve extensions

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也不会。如果要导入具有这些扩展名的文件,则应在导入路径中显式添加扩展名,或者更改此配置来包含要隐式的其他扩展名。

工作目录 Working directory

Supported by: Build

API选项允许您指定用于构建的工作目录。它通常默认为用于调用esbuildAPI的进程的当前工作目录。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中文文档专栏,本人目前正在翻译整理,关注我,有最新的翻译文档会第一时间通知你!

(本文完)

励志前端小黑哥,全网唯一账号!
关注我,带你了解更多前端知识!

你可能感兴趣的:(esbuild中文文档,go,javascript,transformer,软件构建)