はじめに
こちらの資料でNxというツールが紹介されていたが、「Nx」ってなんだ?って思ったので、調査した結果を備忘録がてら記載いたします。
なお、本記事はNxとは何か?ということだけ記載しております。
そのため既にNx
- Nxについて知っている
- Nxを使っている
という形にとっては既知の内容となりますので、本記事はスルーいただければと思います。
Nxとは何か?
こちらに記載の通り
Build system, optimized for monorepos, with plugins for popular frameworks and tools and advanced CI capabilities including caching and distribution.
訳
一般的なフレームワークやツールのプラグイン、キャッシュや配布などの高度な CI 機能を備えた、モノリポジトリ向けに最適化されたシステムを構築します。
ということでJavaだとGradleみたいなフロントエンド用のビルドツールのようです。
メイン機能としては以下の機能が存在するようです。
(これをもっと早く知っていたら色んなプロジェクトで使っていたのに。。。)
コア機能
- 効率的なタスクの実行: Nxはタスクを並列に実行し、タスク間の依存関係に基づいて順序付けます
- CI でのタスクの分散: Nx は、多くの VM にタスクを分散することで CI を拡張します。リポジトリがどれほど大きくても、CI は高速です
- ローカルとリモートでキャッシュ: ローカルとリモートのキャッシュにより、Nxは不要なタスクの再実行を防ぎ、貴重な開発時間を節約します
- E2E テストを分割し、欠陥のあるテストを再実行します: Nx は、大規模な e2e テストを自動的に分割し、VM に分散させます。 Nx はまた、e2e テストの欠陥を自動的に特定し、再実行することもできる
- 依存関係の更新の自動化:Nxプラグインを活用すると、コード生成やコードベースと依存関係を自動的にアップグレードするツールなどの追加機能を得ることができます
- 自分のものに:Nxは高度なカスタマイズと拡張が可能です。 あなたの組織のためのプラグインを作成したり、ツーリングプラグインを作成することによって、それを微調整します
また以下の公式動画がより参考になりました。
video - Nx in 10 minutes!
おわりに
取り急ぎ簡単な紹介のみの記事となりますが、導入も比較的簡単に行うことができ各種CI用のコードを生成することも可能なので今後フロントエンド系で開発するときは是非使ってみたいと思います。