textlint v14をリリースしました
textlint v14.0.0をリリースしました!
- リリースノート: textlint v14.0.0 · textlint
- 変更ログ: Release v14.0.0 · textlint/textlint
textlint v14.0.0は、Node.js v18.14.0以降が必要になります。
Node.js 16は既にEOLなので、Node.js 16のサポートを終了しました。 古いNode.jsを使っている場合は、LTS(Long Term Support)版のNode.jsにアップグレードする必要があります。
ユーザー向けの変更点
基本的にはNode.jsのバージョンが18以降なら、特に影響がある変更はありません。
Node.js 16のサポートを終了
textlint v14はNode.js v18.14.0+が必要です。 Node.js 18か20にアップグレードする必要があります。
また、ルールを開発する人向けのパッケージであるtextlint-scripts
はNode.js v18.19.0+を必要としています(最新のNode.js 18 LTSバージョン)。
gulp-textlint
をmonorepoから分離
gulp-textlint
をmonorepoから分離しました。
- chore!: move gulp-textlint to out of monorepo by azu · Pull Request #1319 · textlint/textlint
- textlint/gulp-textlint
gulp-textlint
はtextlintコアチームによってメンテナンスされていません。
リポジトリとして分けたので、興味がある人は以下のIssueをチェックしてください。
--parallel
と --maxConcurrency
フラグを削除
textlint v14では、実験的であった--parallel
と --maxConcurrency
フラグを削除しました。これらのフラグは並列処理をするためのものでしたが、あまり使われていなかったためです。
# これらのフラグは削除されました
textlint --experimental --parallel --maxConcurrency 4 "**/*.md"
# 代わりに以下のように書き換えてください
textlint "**/*.md"
今後パフォーマンスを本格的に見直す際には再度検討するかもしれませんが、一度削除しました。
- Issue: Parallel linting · Issue #633 · textlint/textlint
- PR: fix(textlint): remove
--parallel
and--maxConcurrency
flag by azu · Pull Request #1338 · textlint/textlint
@textlint/linter-formatter
CLIを削除
@textlint/linter-formatter
はCLIを含んでいましたが、ほぼ使われないものだったので削除しました。
- PR: Removes CLI from @textlint/linter-formatter by kapooraryan · Pull Request #1272 · textlint/textlint
開発者向けの変更点
textlint-scriptsの出力対象を変更
textlint-scripts
がビルドするコードの出力対象をNode.js v18.14.0に変更しました(textlintがサポートする最小のNode.jsバージョンと同じです)。
以前は、ES2015互換のJavaScriptを出力していましたが、textlint v14ではES2022互換のJavaScriptを出力するようになりました。
これによって、async
などの構文がtranspileされずにそのまま出力されるため、パフォーマンスやコードサイズが改善されます。
⚠️ Warning: textlint-scripts v14へアップデートしてビルドしたルールは、出力内容が変わっているため、基本的にはBREAKING CHANGEとして扱ってください。
古いAPIにdeprecation warningを追加
textlint v14では、古いAPIにdeprecation warningを追加しました。
古いAPIとは、textlint
パッケージに含まれていたtextlint
, TextLintCore
, TextLintEngine
, TextFixEngine
のAPIです。
これらのAPIはtextlint v13.0.0で導入された新しいAPIであるcreateLinter
とloadTextlintrc
, loadLinerFormatter
に置き換えられます。
また、TextLintCore
という手続き的なAPIに対しては、マイグレーションを簡単にするために互換性のある@textlint/legacy-textlint-coreというパッケージを提供しています。
非推奨のAPI
textlint
パッケージに含まれていた4つのAPIを非推奨にしました。
Old API | New API |
---|---|
textlint |
use @textlint/legacy-textlint-core or @textlint/kernel |
TextLintCore |
use @textlint/legacy-textlint-core or @textlint/kernel |
TextLintEngine |
use createLinter and loadTextlintrc |
TextFixEngine |
use createLinter and loadTextlintrc |
deprecation warningの制御方法
デフォルトでは、これらの非推奨APIを使うと、コンソールに非推奨の警告が表示されます。 次のNode.jsの環境変数(フラグ)を使うことで、非推奨の警告の動作を制御できます。
NODE_OPTIONS=--throw-deprecation
を使うと、非推奨の警告が例外としてスローされます。NODE_OPTIONS=--no-deprecation
を使うと、非推奨の警告が抑制されます。NODE_OPTIONS=--trace-deprecation
を使うと、非推奨の警告がstderrに出力され、スタックトレースが表示されます。
非推奨のAPIを使っているかどうかを見つけたい場合は、NODE_OPTIONS=--throw-deprecation
を使って実行してください。
# 例: 非推奨のAPIを使ってる場合に例外としてスローする
NODE_OPTIONS=--throw-deprecation node your-script.js
詳しくは、次のページを参照してください。
新しいAPIのドキュメント
マイグレーションガイド
textlint v14.0.0 · textlintを参照してください。
TextLintEngine
とTextFixEngine
は自力で書き換える必要がありますが、textlint
とTextLintCore
は@textlint/legacy-textlint-coreに置き換えられます。
まとめ
textlint v14は、Node.js v18.14.0+が必要です。 ユーザーは基本的にアップデートするだけで特に問題なく使えるはずです。
ルールの開発者は、textlint-scripts
の出力が変わっているため、アップデート後にビルドを確認してください。
基本的には、Node.js v18.14.0+で動作するコード(ES2022)に変わっているので、BREAKING CHANGEとして扱ってください。
また、古いtextlint
のAPIを使っている場合は、非推奨の警告が表示されるので、新しいAPIに置き換えるようにしてください。
textlint v15では、非推奨のAPIを削除する予定です。
textlint v14は下準備的なリリースなので、次はキャッシュ周りを作り直したりしたいです。
textlintでは、Contributionを歓迎しています。
また、GitHub Sponsorsでのサポートも歓迎しています。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。