タスクランナーであるgulpの新バージョン5.0.0がリリースされました! バージョンアップはおよそ5年ぶりとなります。
以下はリリースノートを抄訳したものです。
⚠ 破壊的な変更点
- Node.js <10.13のサポート終了
- デフォルトのストリームエンコーディングがUTF-8に変更
- globbingパスにはanymatchライブラリが標準化。srcとwatchで同じ動作になりました
- 順序付けられたグロブのサポートを削除。chokidarのglobbingの実装と一致
- すべてのグロブとパスがUnix形式のファイルパスに正規化
- .gulp.*設定ファイルはJSバリアントのみ許可
- gulp-cliからv4のアルファリリースのサポート終了
- --verifyフラグを削除
- --requireフラグを--preloadに変更(Node.jsフラグと競合を避ける)
- 多くの旧式で非推奨のロードの削除
- chokidar v3にアップグレード
- ストリームコンテンツ付きのVinylオブジェクトをteexでクローン化。クローンされたストリームはデータ受信を待たずにすぐに流れる
- ディレクトリ作成にprocess.umask()を使用しない(Node.jsのデフォルトモードにフォールバック)
- 非関数、非文字列のオプションコアーサに対してスローする
- Node.jsのsnake_caseフラグのサポート終了
- gulplogの名前空間をSymbolでストアに付加
- gulplogのストアをSymbolでグローバルに付加
- v8flagsキャッシュのファイル名にsha256ハッシュを使用
新機能
- 依存関係ツリーをストリームライン化
- すべてのストリーム実装をStreamxに切り替え
- glob-streamを書き直し、新しいNode.js機能を利用する高性能なディレクトリウォークを実装
- CLIメッセージとgulplogを通るすべてのメッセージの翻訳サポート
- ログのタイムスタンプをユーザーがカスタマイズまたは削除できるように
- gulplogをv2にアップグレード。v1で記録されたメッセージも非推奨の警告が表示される
- gulpile.cjsとgulpfile.mjsをサポート
- swc、esbuild、sucrase、mdxロードのサポート
- ESMエクスポートをサポート
- ストリーミングVinylコンテンツのソースマップ処理をサポート
- .gulp.*設定ファイルでextends構文をサポート
- .gulp.*設定ファイルからgulpfileとpreloadsをオーバーライドできるように
バグ修正
- さまざまなプラットフォームでのシンボリックリンク関連のバグ解決
- glob-parentのReDoS CVEの解決とパフォーマンス改善
- ディレクトリ作成時にファイルまたはシンボリックリンクが存在する際のエラー処理の改善
- 日本語文字をグロブで使えるようウォッチを改善
- ウォッチで否定グロブをトリガーしないよう修正
- ストリームの先頭のBOMの処理を改善
- オプションコアーサの配列内の関数コアーサを適切に処理
- to-absolute-globをフォークし、次の改善を行った:
- ネガティブパターンをトリム前にチェック
- cwd/rootオプションでグロブライクな文字をエスケープ
- グロブの先頭の../を解決
その他の作業
- lazystreamの依存関係を削除
- 各ストリームテストスイートをNode.jsコア、readable-stream、streamxに対して確認
- Node <10.13のサポート終了に伴いリポジトリを正規化