frontend
frontend copied to clipboard
Update dependency gulp to v5
This PR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
gulp (source) | 4.0.2 -> 5.0.0 |
Release Notes
gulpjs/gulp (gulp)
v5.0.0
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.
⚠ BREAKING CHANGES
- 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
Features
- 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
Bug Fixes
- 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
Miscellaneous Chores
- 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)
Individual Changelogs
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
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- [ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
draft since the root cause that necessitated the revert in https://github.com/home-assistant/frontend/pull/20598 needs to be discovered first
Compatibility issue seems to be in the gulp-merge-json
plugin. Still working on details.
The root cause of the missing translations is owed to the fact that version 5 switched to using the streamx
package. The pipe
method for such streams does not support keeping the destination stream open with the { end: false }
option like native node streams. So the main processing stream was being closed right after handling English.
The fix is simple enough just to send it through an intermediate stream first.
In a perfect world, the task should have failed. The pipe
method from streamx
should have thrown given the unsupported argument type, and the promises for merging all the non-English translations should never have fulfilled since they were piping to a closed stream. The latter seems just to be because gulp-merge-json
uses a very old package to build its transform. I can do away with that in a follow up.
Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.
I've started a nightly run to compare, but locally I get the same as gulp v4 now.
Nightly would be no different than the CI build. The only difference is that the nightly workflow pulls the translations from Lokalise instead of from the nightly artifacts.