Skip to content

ym-project/gulp-esbuild

Repository files navigation

downloads per month

gulp-esbuild

A gulp plugin for the esbuild bundler.

There are 2 available exports: gulpEsbuild and createGulpEsbuild. In most cases, you should use the gulpEsbuild export. Use the createGulpEsbuild export if you want to enable esbuild's incremental build.

esbuild's incremental build is used together with gulp's watch API and allows you to rebuild only the changed parts of the code (example).

Installation

npm install gulp-esbuild esbuild gulp

or

yarn add gulp-esbuild esbuild

Examples

Build example

gulpfile.js

const { src, dest } = require('gulp');
const { gulpEsbuild } = require('gulp-esbuild');

function build() {
	return src('./index.tsx')
		.pipe(
			gulpEsbuild({
				entryPoints: ['index.tsx'],
				outfile: 'bundle.js',
				bundle: true,
				loader: {
					'.tsx': 'tsx',
				},
			}),
		)
		.pipe(dest('./dist'));
}

exports.build = build;

package.json

...
"scripts": {
    "build": "gulp build"
}
...

command line

npm run build

Watch mode example

gulpfile.js

const { src, dest, watch } = require('gulp');
const { createGulpEsbuild } = require('gulp-esbuild');
const gulpEsbuild = createGulpEsbuild({ incremental: true });

function build() {
	return src('./src/index.js')
		.pipe(
			gulpEsbuild({
				entryPoints: ['src/index.js'],
				outfile: 'outfile.js',
				bundle: true,
			}),
		)
		.pipe(dest('./dist'));
}

function watchTask() {
	watch('./src/index.js', build);
}

exports.watch = watchTask;

package.json

...
"scripts": {
    "watch": "gulp watch"
}
...

command line

npm run watch

More examples here

Plugin arguments

Name Type Default
entryPoints array|object
sourcemap boolean|'linked'|'inline'|'external'|'both'
sourceRoot string
sourcesContent boolean
legalComments 'none'|'inline'|'eof'|'linked'|'external'
format 'iife'|'cjs'|'esm'
globalName string
target string|array
supported object
mangleProps RegExp
reserveProps RegExp
mangleQuoted boolean
mangleCache object
drop array
dropLabels array
minify boolean
minifyWhitespace boolean
minifyIdentifiers boolean
minifySyntax boolean
lineLimit number
charset 'ascii'|'utf8'
treeShaking boolean
ignoreAnnotations boolean
jsx 'transform'|'preserve'|'automatic'
jsxFactory string
jsxFragment string
jsxImportSource string
jsxDev boolean
jsxSideEffects boolean
define object
pure array
keepNames boolean
absPaths array
banner object
footer object
color boolean
logLevel 'verbose'|'debug'|'info'|'warning'|'error'|'silent' 'silent'
logLimit number
logOverride object
tsconfigRaw string|object
bundle boolean
splitting boolean
preserveSymlinks boolean
outfile string
metafile boolean
metafileName string 'metafile.json'
outdir string
outbase string
platform 'browser'|'node'|'neutral'
external array
packages 'bundle'|'external'
alias object
loader object
resolveExtensions array ['.tsx', '.ts', '.jsx', '.js', '.css', '.json']
mainFields array
conditions array
nodePaths array
tsconfig string
outExtension object
publicPath string
entryNames string
chunkNames string
assetNames string
inject array
plugins array

About

gulp plugin for esbuild bundler

Topics

Resources

License

Stars

Watchers

Forks

Contributors