











Published: · LastMod: September 11, 2022 · 1555 words
| option | 类型 | 默认值 | 说明 |
|---|---|---|---|
| bundle | boolean | false | 把从入口开始的文件打包成一个bundle,设为true时,会把文件引用的其他文件也打包进来,默认为false,则不会打包其他引用文件 |
| define | object | {} | 提供一种替换文件内常量的行为,可以用作替换环境变量 |
| entryPoints | array | [] | 入口文件数组,可以有多个入口一起打包 |
| external | array | [] | 排除打包的一些其他类库或者资源,可以使用通配符 |
| format | string | iife/cjs/esm | 最终打包出来的文件输出格式 |
| inject | array | [] | 可以用来注入一些跨平台时兼容的代码 |
| loader | object | {} | 引用资源也是采用loader的形式进行解析 |
| minify | boolean | false | 是否压缩代码 |
| outdir | string | '' | 最后打包输出的目录 |
| outfile | string | '' | 最终打包的bundle的文件名 |
| platform | string | node/browser | 最后打包输出的平台 |
| serve | string | '' | 开发模式下用作实时响应文件变动,即时打包 |
| sourcemap | boolean | false | 最后是否生成sourcemap文件 |
| splitting | boolean | false | 打包是否进行代码分割 |
| target | array | [] | chrome/ edge/ firefox/ hermes/ ie/ ios/ node/ opera/ rhino/ safari |
| watch | boolean | false | 文件监听模式 |
| write | boolean | false | 是否写入到文件系统/输出到内存中 |
| option | 类型 | 默认值 | 说明 |
|---|---|---|---|
| analyze | bundle分析功能 | ||
| assetNames | 引用的静态资源的重新命名 | ||
| banner | 不同资源添加不同的顶部注释代码 | ||
| charset | string | ascII | 输出文件的字符编码 |
| chunkNames | string | 输出bundle的文件名, 于此同时需要打开splitting, 设置format为esm | |
| color | string | 控制台输出是否带颜色标识 | |
| drop | [] | 是否丢弃debugger和console | |
| footer | string | 不同资源添加不同的底部注释代码 | |
| globalName | string | iife模式下挂载全局变量的名称 | |
| ignoreAnnotations | boolean | 是否忽略tree-shaking默认注解 | |
| jsx | string | 编译jsx语法的能力 |
已经内置的loader包括以下几种
社区插件生态
https://github.com/esbuild/community-plugins
esbuild 分析模式
| |
静态资源的重新命名
| |
| |
输出的chunk的重新命名
| |
输出的日志是否带颜色标识
| |
| |
| |
忽略注解
默认情况下
/* @__PURE__ */注释告诉esbuild,当代码中没有使用到该函数时,就可以被移除掉package.json中配置的sideEffects告诉编译器,当文件引入后没有被使用时,就不会被打包到bundle中去当打开忽略注解后,esbuild编译器就会忽略上面的配置注解,自动分析打包
告诉编译器编译jsx语法的能力
| |
设置jsx编译后的方法名
默认jsx元素会被编译成React.createElement元素
| |
或者在transform的时候设置
| |
如果是在使用typescript开发,可以设置tsconfig.json
| |
或者在使用时添加注释 // @jsx h
特殊注释/* @__PURE__ */ 或者 /* #__PURE__ */是用来标注特殊函数,在打包时可以进行优化,如果没有使用到这个函数,就不会最终打包到bundle中
摇树优化
当项目中有相应的函数没有被使用到时,编译器在打包的时候会对函数进行搜集,如果没有使用到最终会被移除出bundle
esbuild的tree shaking依赖于es6的 import 和 export语法, CommonJS模块就不能支持Tree shaking
默认esbuild的tree shaking只有在format为iife的情况下才是打开的,其他模式下都是关闭的,可以手动设置为true
| |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。