5.0.0 (2024-03-29)
We've tried to provide a high-level changelog for gulp v5 below, but it doesn't contain all changes from the 60+ dependencies that we maintain.
Please see individual changelogs to drill down into all changes that were made.
- Drop support for Node.js <10.13
- Default stream encoding to UTF-8
- Standardized on
anymatch
library for globbing paths. All globs should work the same betweensrc
andwatch
now! - Removed support for ordered globs. This aligns with the chokidar globbing implementation. If you need your globs to be ordered, you can use
ordered-read-stream
- All globs and paths are normalized to unix-like filepaths
- Only allow JS variants for
.gulp.*
config files - Removed support for alpha releases of v4 from
gulp-cli
- Removed the
--verify
flag - Renamed the
--require
flag to--preload
to avoid conflicting with Node.js flags - Removed many legacy and deprecated loaders
- Upgrade to chokidar v3
- Clone
Vinyl
objects with stream contents usingteex
, but no longer wait for all streams to flow before cloned streams will receive data - Stop using
process.umask()
to make directories, instead falling back to Node's default mode - Throw on non-function, non-string option coercers
- Drop support of Node.js snake_case flags
- Use a Symbol for attaching the
gulplog
namespace to the store - Use a Symbol for attaching the
gulplog
store to the global - Use sha256 to hash the
v8flags
cache into a filename
- Streamlined the dependency tree
- Switch all streams implementation to Streamx
- Rewrote
glob-stream
to use a custom directory walk that relies on newer Node.js features and is more performant than old implementation - Implement translation support for all CLI messages and all messages passing through gulplog
- Allow users to customize or remove the timestamp from their logs
- Upgraded gulplog to v2. Messages logged via v1 will also display a deprecated warning. Plugins should update to v2 as the community upgrades to gulp 5
- Added support for
gulpile.cjs
andgulpfile.mjs
- Add support for
swc
,esbuild
,sucrase
, andmdx
loaders - Provide an ESM export (#2760) (b00de68)
- Support sourcemap handling on streaming
Vinyl
contents - Support
extends
syntax for.gulp.*
config file - Allow overriding
gulpfile
andpreloads
via.gulp.*
config file
- Resolve bugs related to symlinks on various platforms
- Resolved some reported ReDoS CVEs and improved performance in glob-parent
- Rework errors surfaced when encountering files or symlinks when trying to create directories
- Ensure watch allows japanese characters in globs (72668c6)
- Ensure watch does not trigger on negated globs (72668c6)
- Improve handling of BOM at the beginning of a stream
- Properly handle function coercer in array of option coercers
- Fork
to-absolute-glob
to:- Check negative patterns before trimming
- Ensure glob-like characters are escaped in cwd & root options
- Resolve
../
at the beginning of globs
- Remove lazystream dependency
- Updated various stream test suites to test against Node.js core
stream
,readable-stream
, andstreamx
- Normalize repository, dropping node <10.13 support (#2758) (72668c6)
We created and maintain various projects that gulp depends upon. You can find their changelogs linked below:
- undertaker
- vinyl-fs
- glob-stream
- gulp-cli
- interpret
- glob-parent
- glob-watcher
- vinyl
- fs-mkdirp-stream
- lead
- vinyl-sourcemap
- to-through
- resolve-options
- remove-bom-stream
- value-or-function
- now-and-later
- @gulpjs/to-absolute-glob
- fined
- mute-stdout
- semver-greatest-satisfied-range
- flagged-respawn
- rechoir
- gulplog
- glogg
- @gulpjs/messages
- sparkles
- liftoff
- v8flags
- bach
- undertaker-registry
- async-settle
- last-run
- async-done
- replace-homedir
- replaced 3.x task system (orchestrator) with new task system (bach)
- removed gulp.reset
- removed 3 argument syntax for
gulp.task
gulp.task
should only be used when you will call the task with the CLI- added
gulp.series
andgulp.parallel
methods for composing tasks. Everything must use these now. - added single argument syntax for
gulp.task
which allows a named function to be used as the name of the task and task function. - added
gulp.tree
method for retrieving the task tree. Pass{ deep: true }
for anarchy
compatible node list. - added
gulp.registry
for setting custom registries.
- split CLI out into a module if you want to save bandwidth/disk space. you can install the gulp CLI using either
npm install gulp -g
ornpm install gulp-cli -g
, where gulp-cli is the smaller one (no module code included) - add
--tasks-json
flag to CLI to dump the whole tree out for other tools to consume - added
--verify
flag to check the dependencies in package.json against the plugin blacklist.
- added
gulp.symlink
which functions exactly likegulp.dest
, but symlinks instead. - added
dirMode
param togulp.dest
andgulp.symlink
which allows better control over the mode of the destination folder that is created. - globs passed to
gulp.src
will be evaluated in order, which means this is possiblegulp.src(['*.js', '!b*.js', 'bad.js'])
(exclude every JS file that starts with a b except bad.js) - performance for gulp.src has improved massively
gulp.src(['**/*', '!b.js'])
will no longer eat CPU since negations happen during walking now
- added
since
option togulp.src
which lets you only match files that have been modified since a certain date (for incremental builds) - fixed
gulp.src
not following symlinks - added
overwrite
option togulp.dest
which allows you to enable or disable overwriting of existing files
- update interpret to 1.0.0 (support for babel-register)
- fix to include manpages in published tarball
- documentation/recipe updates
- add babel support
- add transpiler fallback support
- add support for some renamed transpilers: livescript, etc
- add JSCS
- update dependencies (liftoff, interpret)
- documentation tweaks
- fix node 0.12/iojs problems
- add node 0.12 and iojs to travis
- update dependencies (liftoff, v8flags)
- documentation tweaks
- add link to spanish docs
- update dependencies (archy, semver, mocha, etc)
- documentation tweaks
- fix local version undefined output
- add completion for fish shell
- fix powershell completion line splitting
- add support for arbitrary node flags (oops, should have been a minor bump)
- add v8flags dependency
- update dependencies (liftoff)
- documentation tweaks
- update dependencies (minimist, tildify)
- documentation tweaks
- handle errors a bit better
- update dependencies (gulp-util, semver, etc)
- documentation tweaks
- remove executable flag from LICENSE
- update dependencies (chalk, minimist, liftoff, etc)
- documentation tweaks
- simplify --silent and --tasks-simple
- fix bug in autocomplete where errors would come out
- CLI will use exit code 1 on exit when any task fails during the lifetime of the process
- Tweak error formatting to work better with PluginErrors and strings
- add manpage generation
- the CLI now adds process.env.INIT_CWD which is the original cwd it was launched from
- update vinyl-fs
- gulp.src is now a writable passthrough, this means you can use it to add files to your pipeline at any point
- gulp.dest can now take a function to determine the folder
This is now possible!
gulp.src('lib/*.js')
.pipe(uglify())
.pipe(gulp.src('styles/*.css'))
.pipe(gulp.dest(function(file){
// I don't know, you can do something cool here
return 'build/whatever';
}));
- update vinyl-fs to remove BOM from UTF8 files
- add --tasks-simple flag for plaintext task listings
- updated autocomplete scripts to be simpler and use new --tasks-simple flag
- added support for transpilers via liftoff 0.11 and interpret
- just npm install your compiler (coffee-script for example) and it will work out of the box
- update deps
- gulp.dest now support mode option, uses source file mode by default (file.stat.mode)
- use chalk for colors in bin
- update gulp.env deprecation msg to be more helpful
- add -V for version on CLI (unix standard)
- -v is deprecated, use -V
- add -T as an alias for --tasks
- documentation
- added
gulp.watch(globs, tasksArray)
sugar - remove gulp.taskQueue
- deprecate gulp.run
- deprecate gulp.env
- add engineStrict to prevent people with node < 0.9 from installing
- added
--tasks
that prints out the tree of tasks + deps - global cli + local install mismatch is no longer fatal
- remove tests for fs stuff
- switch core src, dest, and watch to vinyl-fs
- internal cleaning
--base
is now--cwd
- support for
--base
CLI arg to change where the search for gulpfile/--require
s starts - support for
--gulpfile
CLI arg to point to a gulpfile specifically
- file.contents streams are no longer paused coming out of src
- dest now passes files through before they are empty to fix passing to multiple dests
- Bug fix - we didn't have any CLI tests
- Update dependencies for bug fixes
- autocomplete stuff in the completion folder
- File object is now vinyl
- .watch() is now glob-watcher
- Fix CLI -v when no gulpfile found
- gulp-util updated
- Logging moved to CLI bin file
- Will cause double logging if you update global CLI to 3.2 but not local
- Will cause no logging if you update local to 3.1 but not global CLI
- Drop support for < 0.9
- Move isStream and isBuffer to gulp-util
- Move file class to gulp-util
- Ability to pass multiple globs and glob negations to glob-stream
- Breaking change to the way glob-stream works
- File object is now a class
- file.shortened changed to file.relative
- file.cwd added
- Break out getStats to avoid nesting
- Major code reorganization
- Breaking change to the way options are passed to glob-stream
- Introduce new File object to ease pain of computing shortened names (now a getter)
- Moved stuff to gulp-util
- Quit exposing createGlobStream (just use the glob-stream module)
- More logging
- Prettier time durations
- Tons of documentation changes
- gulp.trigger(tasks...) as a through stream
- src buffer=false fixed for 0.8 and 0.9 (remember to .resume() on these versions before consuming)
- CLI completely rewritten
- Colorful logging
- Uses local version of gulp to run tasks
- Uses findup to locate gulpfile (so you can run it anywhere in your project)
- chdir to gulpfile directory before loading it
- Correct exit codes on errors
- silent flag added to gulp to disable logging
- Fixes to task orchestration (3rd party)
- Better support for globbed directories (thanks @robrich)
- Can specify buffer=false on src streams to make file.content a stream
- Can specify read=false on src streams to disable file.content
- Can specify run callback
- Can specify task dependencies
- Tasks can accept callback or return promise
gulp.verbose
exposes run-time internals
- Specify dependency versions
- Updated docs
- Rename .files() to .src() and .folder() to .dest()
- Initial Release