ym-project / gulp-esbuild

gulp plugin for esbuild bundler
MIT License
43 stars 7 forks source link
esbuild gulp gulp-plugin

downloads per month

gulp-esbuild

A gulp plugin for the esbuild bundler.

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

const {createGulpEsbuild} = require('gulp-esbuild')
const gulpEsbuild = createGulpEsbuild({
    incremental: true, // enables the esbuild's incremental build
    piping: true,      // enables piping
})

Notice: ⚠️ piping is disabled by default ⚠️

Installation

npm install gulp-esbuild

or

yarn add gulp-esbuild

Examples

build example

gulpfile.js

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

function build() {
    return src('./index.tsx')
        .pipe(gulpEsbuild({
            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({
            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
sourcemap boolean\|'linked'\|'inline'\|'external'\|'both'
sourceRoot string
sourcesContent boolean
legalComments 'none'\|'inline'\|'eof'\|'linked'\|'external'
format 'iife'\|'cjs'\|'esm'
globalName string
target string
supported object
mangleProps RegExp
reserveProps RegExp
mangleQuoted boolean
mangleCache object
drop 'console'\|'debugger'
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
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 'external'
alias object
loader object
resolveExtensions array
mainFields array
conditions array
tsconfig string
outExtension object
publicPath string
entryNames string
chunkNames string
assetNames string
inject array
plugins array