package esbuild

import "github.com/gohugoio/hugo/internal/js/esbuild"

Package esbuild provides functions for building JavaScript resources.

Package esbuild provides functions for building JavaScript resources.

Package esbuild provides functions for building JavaScript resources.

Index

Constants

const (
	NsHugoImport            = "ns-hugo-imp"
	NsHugoImportResolveFunc = "ns-hugo-imp-func"
)
const (
	PrefixHugoVirtual = "__hu_v"
	PrefixHugoMemory  = "__hu_m"
)
const (
	NsBatch = "_hugo-js-batch"
)

Functions

func NewBatcherClient

func NewBatcherClient(deps *deps.Deps) (js.BatcherClient, error)

func ResolveComponent

func ResolveComponent[T any](impPath string, resolve func(string) (v T, found, isDir bool)) (v T, found bool)

ResolveComponent resolves a component using the given resolver.

func ResolveResource

func ResolveResource(impPath string, resourceGetter resource.ResourceGetter) (r resource.Resource)

ResolveResource resolves a resource using the given resourceGetter.

func SourcesFromSourceMap

func SourcesFromSourceMap(s string) []string

Used in tests.

func ValidateBatchID

func ValidateBatchID(id string, isTopLevel bool) error

ValidateBatchID validates the given ID according to some very

Types

type BatcherClient

type BatcherClient struct {
	// contains filtered or unexported fields
}

BatcherClient is a client for building JavaScript packages.

func (*BatcherClient) New

func (c *BatcherClient) New(id string) (js.Batcher, error)

New creates a new Batcher with the given ID. This will be typically created once and reused across rebuilds.

func (*BatcherClient) Store

func (c *BatcherClient) Store() *maps.Cache[string, js.Batcher]

type BuildClient

type BuildClient struct {
	// contains filtered or unexported fields
}

BuildClient is a client for building JavaScript resources using esbuild.

func NewBuildClient

func NewBuildClient(fs *filesystems.SourceFilesystem, rs *resources.Spec) *BuildClient

NewBuildClient creates a new BuildClient.

func (*BuildClient) Build

func (c *BuildClient) Build(opts Options) (api.BuildResult, error)

Build builds the given JavaScript resources using esbuild with the given options.

type ErrorMessageResolved

type ErrorMessageResolved struct {
	Path    string
	Message string
	Content hugio.ReadSeekCloser
}

ErrorMessageResolved holds a resolved error message.

type ExternalOptions

type ExternalOptions struct {
	// If not set, the source path will be used as the base target path.
	// Note that the target path's extension may change if the target MIME type
	// is different, e.g. when the source is TypeScript.
	TargetPath string

	// Whether to minify to output.
	Minify bool

	// One of "inline", "external", "linked" or "none".
	SourceMap string

	SourcesContent bool

	// The language target.
	// One of: es2015, es2016, es2017, es2018, es2019, es2020 or esnext.
	// Default is esnext.
	Target string

	// The output format.
	// One of: iife, cjs, esm
	// Default is to esm.
	Format string

	// One of browser, node, neutral.
	// Default is browser.
	// See https://esbuild.github.io/api/#platform
	Platform string

	// External dependencies, e.g. "react".
	Externals []string

	// This option allows you to automatically replace a global variable with an import from another file.
	// The filenames must be relative to /assets.
	// See https://esbuild.github.io/api/#inject
	Inject []string

	// User defined symbols.
	Defines map[string]any

	// This tells esbuild to edit your source code before building to drop certain constructs.
	// See https://esbuild.github.io/api/#drop
	Drop string

	// Maps a component import to another.
	Shims map[string]string

	// Configuring a loader for a given file type lets you load that file type with an
	// import statement or a require call. For example, configuring the .png file extension
	// to use the data URL loader means importing a .png file gives you a data URL
	// containing the contents of that image
	//
	// See https://esbuild.github.io/api/#loader
	Loaders map[string]string

	// User defined params. Will be marshaled to JSON and available as "@params", e.g.
	//     import * as params from '@params';
	Params any

	// What to use instead of React.createElement.
	JSXFactory string

	// What to use instead of React.Fragment.
	JSXFragment string

	// What to do about JSX syntax.
	// See https://esbuild.github.io/api/#jsx
	JSX string

	// Which library to use to automatically import JSX helper functions from. Only works if JSX is set to automatic.
	// See https://esbuild.github.io/api/#jsx-import-source
	JSXImportSource string

	// There is/was a bug in WebKit with severe performance issue with the tracking
	// of TDZ checks in JavaScriptCore.
	//
	// Enabling this flag removes the TDZ and `const` assignment checks and
	// may improve performance of larger JS codebases until the WebKit fix
	// is in widespread use.
	//
	// See https://bugs.webkit.org/show_bug.cgi?id=199866
	// Deprecated: This no longer have any effect and will be removed.
	// TODO(bep) remove. See https://github.com/evanw/esbuild/commit/869e8117b499ca1dbfc5b3021938a53ffe934dba
	AvoidTDZ bool
}

ExternalOptions holds user facing options for the js.Build template function.

func DecodeExternalOptions

func DecodeExternalOptions(m map[string]any) (ExternalOptions, error)

DecodeExternalOptions decodes the given map into ExternalOptions.

type InternalOptions

type InternalOptions struct {
	MediaType     media.Type
	OutDir        string
	Contents      string
	SourceDir     string
	ResolveDir    string
	AbsWorkingDir string
	Metafile      bool

	StdinSourcePath string

	DependencyManager identity.Manager

	Stdin                   bool // Set to true to pass in the entry point as a byte slice.
	Splitting               bool
	TsConfig                string
	EntryPoints             []string
	ImportOnResolveFunc     func(string, api.OnResolveArgs) string
	ImportOnLoadFunc        func(api.OnLoadArgs) string
	ImportParamsOnLoadFunc  func(args api.OnLoadArgs) json.RawMessage
	ErrorMessageResolveFunc func(api.Message) *ErrorMessageResolved
	ResolveSourceMapSource  func(string) string // Used to resolve paths in error source maps.
}

InternalOptions holds internal options for the js.Build template function.

type Options

type Options struct {
	ExternalOptions
	InternalOptions
	// contains filtered or unexported fields
}

Options holds the options passed to Build.

type Package

type Package struct {
	// contains filtered or unexported fields
}

Package holds a group of JavaScript resources.

func (*Package) Groups

func (p *Package) Groups() map[string]resource.Resources

Source Files

batch.go build.go helpers.go options.go resolve.go sourcemap.go

Version
v0.144.2 (latest)
Published
Feb 19, 2025
Platform
linux/amd64
Imports
37 packages
Last checked
18 hours ago

Tools for package owners.