Documentation ¶
Overview ¶
This API exposes esbuild's two main operations: building and transforming. It's intended for integrating esbuild into other tools as a library.
If you are just trying to run esbuild from Go without the overhead of creating a child process, there is also an API for the command-line interface itself: https://godoc.org/github.com/evanw/esbuild/pkg/cli.
Build API ¶
This function runs an end-to-end build operation. It takes an array of file paths as entry points, parses them and all of their dependencies, and returns the output files to write to the file system. The available options roughly correspond to esbuild's command-line flags.
Example usage:
package main import ( "os" "github.com/evanw/esbuild/pkg/api" ) func main() { result := api.Build(api.BuildOptions{ EntryPoints: []string{"input.js"}, Outfile: "output.js", Bundle: true, Write: true, LogLevel: api.LogLevelInfo, }) if len(result.Errors) > 0 { os.Exit(1) } }
Transform API ¶
This function transforms a string of source code into JavaScript. It can be used to minify JavaScript, convert TypeScript/JSX to JavaScript, or convert newer JavaScript to older JavaScript. The available options roughly correspond to esbuild's command-line flags.
Example usage:
package main import ( "fmt" "os" "github.com/evanw/esbuild/pkg/api" ) func main() { jsx := ` import * as React from 'react' import * as ReactDOM from 'react-dom' ReactDOM.render( <h1>Hello, world!</h1>, document.getElementById('root') ); ` result := api.Transform(jsx, api.TransformOptions{ Loader: api.LoaderJSX, }) fmt.Printf("%d errors and %d warnings\n", len(result.Errors), len(result.Warnings)) os.Stdout.Write(result.Code) }
Index ¶
- func AnalyzeMetafile(metafile string, opts AnalyzeMetafileOptions) string
- func FormatMessages(msgs []Message, opts FormatMessagesOptions) []string
- type AnalyzeMetafileOptions
- type BuildOptions
- type BuildResult
- type Charset
- type Drop
- type Engine
- type EngineName
- type EntryPoint
- type Format
- type FormatMessagesOptions
- type JSX
- type LegalComments
- type Loader
- type Location
- type LogLevel
- type MangleQuoted
- type Message
- type MessageKind
- type Note
- type OnLoadArgs
- type OnLoadOptions
- type OnLoadResult
- type OnResolveArgs
- type OnResolveOptions
- type OnResolveResult
- type OnStartResult
- type OutputFile
- type Packages
- type Platform
- type Plugin
- type PluginBuild
- type ResolveKind
- type ResolveOptions
- type ResolveResult
- type ServeOnRequestArgs
- type ServeOptions
- type ServeResult
- type SideEffects
- type SourceMap
- type SourcesContent
- type StderrColor
- type StdinOptions
- type Target
- type TransformOptions
- type TransformResult
- type TreeShaking
- type WatchMode
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AnalyzeMetafile ¶ added in v0.12.26
func AnalyzeMetafile(metafile string, opts AnalyzeMetafileOptions) string
Documentation: https://esbuild.github.io/api/#analyze
func FormatMessages ¶ added in v0.10.1
func FormatMessages(msgs []Message, opts FormatMessagesOptions) []string
Types ¶
type AnalyzeMetafileOptions ¶ added in v0.12.26
type BuildOptions ¶
type BuildOptions struct { Color StderrColor // Documentation: https://esbuild.github.io/api/#color LogLevel LogLevel // Documentation: https://esbuild.github.io/api/#log-level LogLimit int // Documentation: https://esbuild.github.io/api/#log-limit LogOverride map[string]LogLevel // Documentation: https://esbuild.github.io/api/#log-override Sourcemap SourceMap // Documentation: https://esbuild.github.io/api/#sourcemap SourceRoot string // Documentation: https://esbuild.github.io/api/#source-root SourcesContent SourcesContent // Documentation: https://esbuild.github.io/api/#sources-content Target Target // Documentation: https://esbuild.github.io/api/#target Engines []Engine // Documentation: https://esbuild.github.io/api/#target Supported map[string]bool // Documentation: https://esbuild.github.io/api/#supported MangleProps string // Documentation: https://esbuild.github.io/api/#mangle-props ReserveProps string // Documentation: https://esbuild.github.io/api/#mangle-props MangleQuoted MangleQuoted // Documentation: https://esbuild.github.io/api/#mangle-props MangleCache map[string]interface{} // Documentation: https://esbuild.github.io/api/#mangle-props Drop Drop // Documentation: https://esbuild.github.io/api/#drop MinifyWhitespace bool // Documentation: https://esbuild.github.io/api/#minify MinifyIdentifiers bool // Documentation: https://esbuild.github.io/api/#minify MinifySyntax bool // Documentation: https://esbuild.github.io/api/#minify Charset Charset // Documentation: https://esbuild.github.io/api/#charset TreeShaking TreeShaking // Documentation: https://esbuild.github.io/api/#tree-shaking IgnoreAnnotations bool // Documentation: https://esbuild.github.io/api/#ignore-annotations LegalComments LegalComments // Documentation: https://esbuild.github.io/api/#legal-comments JSX JSX // Documentation: https://esbuild.github.io/api/#jsx-mode JSXFactory string // Documentation: https://esbuild.github.io/api/#jsx-factory JSXFragment string // Documentation: https://esbuild.github.io/api/#jsx-fragment JSXImportSource string // Documentation: https://esbuild.github.io/api/#jsx-import-source JSXDev bool // Documentation: https://esbuild.github.io/api/#jsx-dev JSXSideEffects bool // Documentation: https://esbuild.github.io/api/#jsx-side-effects Define map[string]string // Documentation: https://esbuild.github.io/api/#define Pure []string // Documentation: https://esbuild.github.io/api/#pure KeepNames bool // Documentation: https://esbuild.github.io/api/#keep-names GlobalName string // Documentation: https://esbuild.github.io/api/#global-name Bundle bool // Documentation: https://esbuild.github.io/api/#bundle PreserveSymlinks bool // Documentation: https://esbuild.github.io/api/#preserve-symlinks Splitting bool // Documentation: https://esbuild.github.io/api/#splitting Outfile string // Documentation: https://esbuild.github.io/api/#outfile Metafile bool // Documentation: https://esbuild.github.io/api/#metafile Outdir string // Documentation: https://esbuild.github.io/api/#outdir Outbase string // Documentation: https://esbuild.github.io/api/#outbase AbsWorkingDir string // Documentation: https://esbuild.github.io/api/#working-directory Platform Platform // Documentation: https://esbuild.github.io/api/#platform Format Format // Documentation: https://esbuild.github.io/api/#format External []string // Documentation: https://esbuild.github.io/api/#external Packages Packages // Documentation: https://esbuild.github.io/api/#packages Alias map[string]string // Documentation: https://esbuild.github.io/api/#alias MainFields []string // Documentation: https://esbuild.github.io/api/#main-fields Conditions []string // Documentation: https://esbuild.github.io/api/#conditions Loader map[string]Loader // Documentation: https://esbuild.github.io/api/#loader ResolveExtensions []string // Documentation: https://esbuild.github.io/api/#resolve-extensions Tsconfig string // Documentation: https://esbuild.github.io/api/#tsconfig OutExtension map[string]string // Documentation: https://esbuild.github.io/api/#out-extension PublicPath string // Documentation: https://esbuild.github.io/api/#public-path Inject []string // Documentation: https://esbuild.github.io/api/#inject Banner map[string]string // Documentation: https://esbuild.github.io/api/#banner NodePaths []string // Documentation: https://esbuild.github.io/api/#node-paths EntryNames string // Documentation: https://esbuild.github.io/api/#entry-names ChunkNames string // Documentation: https://esbuild.github.io/api/#chunk-names AssetNames string // Documentation: https://esbuild.github.io/api/#asset-names EntryPoints []string // Documentation: https://esbuild.github.io/api/#entry-points EntryPointsAdvanced []EntryPoint // Documentation: https://esbuild.github.io/api/#entry-points Stdin *StdinOptions // Documentation: https://esbuild.github.io/api/#stdin Write bool // Documentation: https://esbuild.github.io/api/#write AllowOverwrite bool // Documentation: https://esbuild.github.io/api/#allow-overwrite Incremental bool // Documentation: https://esbuild.github.io/api/#incremental Plugins []Plugin // Documentation: https://esbuild.github.io/plugins/ Watch *WatchMode // Documentation: https://esbuild.github.io/api/#watch }
type BuildResult ¶
type BuildResult struct { Errors []Message Warnings []Message OutputFiles []OutputFile Metafile string MangleCache map[string]interface{} Rebuild func() BuildResult // Only when "Incremental: true" Stop func() // Only when "Watch: true" }
func Build ¶
func Build(options BuildOptions) BuildResult
Documentation: https://esbuild.github.io/api/#build-api
type Engine ¶ added in v0.5.25
type Engine struct { Name EngineName Version string }
type EngineName ¶ added in v0.5.25
type EngineName uint8
const ( EngineChrome EngineName = iota EngineEdge EngineFirefox EngineIE EngineIOS EngineNode EngineOpera EngineSafari EngineDeno EngineHermes EngineRhino )
type EntryPoint ¶ added in v0.11.0
type FormatMessagesOptions ¶ added in v0.10.1
type FormatMessagesOptions struct { TerminalWidth int Kind MessageKind Color bool }
type LegalComments ¶ added in v0.11.15
type LegalComments uint8
const ( LegalCommentsDefault LegalComments = iota LegalCommentsNone LegalCommentsInline LegalCommentsEndOfFile LegalCommentsLinked LegalCommentsExternal )
type MangleQuoted ¶ added in v0.14.24
type MangleQuoted uint8
const ( MangleQuotedFalse MangleQuoted = iota MangleQuotedTrue )
type MessageKind ¶ added in v0.10.1
type MessageKind uint8
const ( ErrorMessage MessageKind = iota WarningMessage )
type OnLoadArgs ¶ added in v0.8.1
type OnLoadOptions ¶ added in v0.8.1
type OnLoadResult ¶ added in v0.8.1
type OnResolveArgs ¶ added in v0.8.1
type OnResolveArgs struct { Path string Importer string Namespace string ResolveDir string Kind ResolveKind PluginData interface{} }
type OnResolveOptions ¶ added in v0.8.1
type OnResolveResult ¶ added in v0.8.1
type OnStartResult ¶ added in v0.11.15
type OutputFile ¶
type Plugin ¶ added in v0.8.1
type Plugin struct { Name string Setup func(PluginBuild) }
type PluginBuild ¶ added in v0.8.1
type PluginBuild struct { InitialOptions *BuildOptions Resolve func(path string, options ResolveOptions) ResolveResult OnStart func(callback func() (OnStartResult, error)) OnEnd func(callback func(result *BuildResult)) OnResolve func(options OnResolveOptions, callback func(OnResolveArgs) (OnResolveResult, error)) OnLoad func(options OnLoadOptions, callback func(OnLoadArgs) (OnLoadResult, error)) }
type ResolveKind ¶ added in v0.8.52
type ResolveKind uint8
const ( ResolveNone ResolveKind = iota ResolveEntryPoint ResolveJSImportStatement ResolveJSRequireCall ResolveJSDynamicImport ResolveJSRequireResolve ResolveCSSImportRule ResolveCSSURLToken )
type ResolveOptions ¶ added in v0.14.8
type ResolveOptions struct { PluginName string Importer string Namespace string ResolveDir string Kind ResolveKind PluginData interface{} }
type ResolveResult ¶ added in v0.14.8
type ServeOnRequestArgs ¶ added in v0.8.12
type ServeOptions ¶ added in v0.8.12
type ServeOptions struct { Port uint16 Host string Servedir string OnRequest func(ServeOnRequestArgs) }
Documentation: https://esbuild.github.io/api/#serve-arguments
type ServeResult ¶ added in v0.8.12
Documentation: https://esbuild.github.io/api/#serve-return-values
func Serve ¶ added in v0.8.12
func Serve(serveOptions ServeOptions, buildOptions BuildOptions) (ServeResult, error)
Documentation: https://esbuild.github.io/api/#serve
type SideEffects ¶ added in v0.12.8
type SideEffects uint8
const ( SideEffectsTrue SideEffects = iota SideEffectsFalse )
type SourcesContent ¶ added in v0.8.27
type SourcesContent uint8
const ( SourcesContentInclude SourcesContent = iota SourcesContentExclude )
type StderrColor ¶
type StderrColor uint8
const ( ColorIfTerminal StderrColor = iota ColorNever ColorAlways )
type StdinOptions ¶ added in v0.6.1
type TransformOptions ¶
type TransformOptions struct { Color StderrColor // Documentation: https://esbuild.github.io/api/#color LogLevel LogLevel // Documentation: https://esbuild.github.io/api/#log-level LogLimit int // Documentation: https://esbuild.github.io/api/#log-limit LogOverride map[string]LogLevel // Documentation: https://esbuild.github.io/api/#log-override Sourcemap SourceMap // Documentation: https://esbuild.github.io/api/#sourcemap SourceRoot string // Documentation: https://esbuild.github.io/api/#source-root SourcesContent SourcesContent // Documentation: https://esbuild.github.io/api/#sources-content Target Target // Documentation: https://esbuild.github.io/api/#target Engines []Engine // Documentation: https://esbuild.github.io/api/#target Supported map[string]bool // Documentation: https://esbuild.github.io/api/#supported Platform Platform // Documentation: https://esbuild.github.io/api/#platform Format Format // Documentation: https://esbuild.github.io/api/#format GlobalName string // Documentation: https://esbuild.github.io/api/#global-name MangleProps string // Documentation: https://esbuild.github.io/api/#mangle-props ReserveProps string // Documentation: https://esbuild.github.io/api/#mangle-props MangleQuoted MangleQuoted // Documentation: https://esbuild.github.io/api/#mangle-props MangleCache map[string]interface{} // Documentation: https://esbuild.github.io/api/#mangle-props Drop Drop // Documentation: https://esbuild.github.io/api/#drop MinifyWhitespace bool // Documentation: https://esbuild.github.io/api/#minify MinifyIdentifiers bool // Documentation: https://esbuild.github.io/api/#minify MinifySyntax bool // Documentation: https://esbuild.github.io/api/#minify Charset Charset // Documentation: https://esbuild.github.io/api/#charset TreeShaking TreeShaking // Documentation: https://esbuild.github.io/api/#tree-shaking IgnoreAnnotations bool // Documentation: https://esbuild.github.io/api/#ignore-annotations LegalComments LegalComments // Documentation: https://esbuild.github.io/api/#legal-comments JSX JSX // Documentation: https://esbuild.github.io/api/#jsx JSXFactory string // Documentation: https://esbuild.github.io/api/#jsx-factory JSXFragment string // Documentation: https://esbuild.github.io/api/#jsx-fragment JSXImportSource string // Documentation: https://esbuild.github.io/api/#jsx-import-source JSXDev bool // Documentation: https://esbuild.github.io/api/#jsx-dev JSXSideEffects bool // Documentation: https://esbuild.github.io/api/#jsx-side-effects TsconfigRaw string // Documentation: https://esbuild.github.io/api/#tsconfig-raw Banner string // Documentation: https://esbuild.github.io/api/#banner Define map[string]string // Documentation: https://esbuild.github.io/api/#define Pure []string // Documentation: https://esbuild.github.io/api/#pure KeepNames bool // Documentation: https://esbuild.github.io/api/#keep-names Sourcefile string // Documentation: https://esbuild.github.io/api/#sourcefile Loader Loader // Documentation: https://esbuild.github.io/api/#loader }
type TransformResult ¶
type TransformResult struct { Errors []Message Warnings []Message Code []byte Map []byte MangleCache map[string]interface{} }
func Transform ¶
func Transform(input string, options TransformOptions) TransformResult
Documentation: https://esbuild.github.io/api/#transform-api
type TreeShaking ¶ added in v0.8.10
type TreeShaking uint8
const ( TreeShakingDefault TreeShaking = iota TreeShakingFalse TreeShakingTrue )
type WatchMode ¶ added in v0.8.38
type WatchMode struct {
OnRebuild func(BuildResult)
}