先日、 GitHub のセキュリティアラート (Lodash に関する CVE-2019-10744) が飛んできて、対応を行ったので、メモメモ。
こういう対応って一時的にパパっとやっちゃって、メモ残さないから、後から何やったけなってなって、良くない。
今回、アップデートしたリポジトリは、以下の6つ。
- tearoom6/tearoom6.github.io: Portfolio Site
- tearoom6/sync-sync: Atom package for managing posts & documents of blog/collaboration services
- tearoom6/s3uploader: Files uploader to Amazon S3 by drag & drop.
- tearoom6/MemoryTouch: Breakthrough - Unity project
- tearoom6/QuickDrive2: Chrome extension to provide quick access to your Google Drive files.
- tearoom6/esa-plus: Chrome Extension to add more features to esa.io.
Yarn での依存ライブラリのバージョンアップデート
普通に yarn upgrade
を実行だと、 package.json
で縛ったバージョン以上には上げてくれない。
あくまで最新にアップデートしたい場合には、 --latest
を付けます。
# 特定のライブラリだけアップデートする場合
yarn upgrade lodash --latest
# 全部アップデートする場合
yarn upgrade --latest
Gulp v3->v4 の移行について
どうせならと、全ライブラリをアップデートした影響で、 Gulp のバージョンもあがって、後方互換性のない変更にぶち当たりました。
gulp4 では、単体のタスクは gulp.task(name)
(引数1つ) で、複数タスクからなるパイプラインは gulp.series
(直列実行) / gulp.parallel
(並列実行) で表現する、というようになったようです。
これに伴う、主な変更点は、以下のとおりです。
-
run-sequence
の代わりにgulp.series
/gulp.parallel
を使う-
run-sequence
は Gulp にとって 3rd party library ですが、 Gulp 本体が上述の通り、同様の機能を提供したので、そちらを使うようにします
-
- gulp3 で、 task の依存関係を示すために、
gulp.task
の第2引数に依存性のある task の名前の配列を渡していたところには、gulp.task(name)
/gulp.series
/gulp.parallel
を使う- 依存性のあるタスクというのは、要はパイプライン実行するということなので、理にかなってますね
- gulp3 で、
gulp.watch
の第2引数に実行されるべき task の名前の配列を渡していたところも同様に、gulp.task(name)
/gulp.series
/gulp.parallel
を使う
これらの変更に伴って、若干、非同期処理終了を告げる callback
の呼出し方が変わります。
こうやって全体通して見ると、非常に一貫性があって、納得感のある変更となっていました。
なお、 gulpfile.babel.js
を使って ES6 形式で gulpfile を書いている場合には、 @babel/register
をインストールだけする必要がありそうです。 (ちょっとハマりました)
この子は今までも babel-core/register
, babel-register
と名前を変えている厄介な子みたいです。 (babel 系、パッケージ名変えすぎ!?)
References
- yarn upgradeのあれこれ - Qiita
- Gulp v4 移行メモ - かもメモ
- gulp3→4の変更点に気をつけよう! - Qiita
- これからはじめるGulp #3:gulp.watchでファイルの変更を監視しタスクを実行する | DevelopersIO
- Using ES6 with gulp — Mark Goodyear — Front-end developer and designer
- gulp/2-javascript-and-gulpfiles.md at master · gulpjs/gulp
- Babelを6系にアップデートしたらgulpでこける - Qiita
- Gulp fails to load '@babel/register' · Issue #171 · gulpjs/gulp-cli
- Failed to load external module babel-register · Issue #1631 · gulpjs/gulp