ls-lintを使ってファイル命名規則をチェックする方法
背景
プロジェクトのファイル命名規則について、チームで共有しているものの、実際にはチェックする仕組みがないということはありませんか?
例えば、ファイル名には、アンダースコアを使わない、キャメルケースを使う、などのルールがあるとします。
このようなルールをチェックするために、ls-lintというツールを使ってみました。
ls-lintとは
ls-lintは、ディレクトリとファイル名のリンターで、あなたのプロジェクトファイルシステムに構造をもたらします。以下に主な特徴を示します:
- シンプルなルールを一つの.ls-lint.ymlファイルで管理する最小限のセットアップ
- すべての拡張子に対応、ファイル名だけでなくディレクトリ名も対応
- 高速 - 数千のファイルとディレクトリをミリ秒でリント
- Windows, MacOS, Linux、NPMパッケージおよびDockerイメージに対応
- ほとんどのサードパーティ依存関係がありません (go-yaml と doublestar のみ)
インストール
ls-lintをインストールするためには、下記のコマンドを実行します。
# Linux
curl -sL -o ls-lint https://github.com/loeffel-io/ls-lint/releases/download/v2.0.0-beta.0/ls-lint-linux-amd64 && chmod +x ls-lint && ./ls-lint
# MacOS
curl -sL -o ls-lint https://github.com/loeffel-io/ls-lint/releases/download/v2.0.0-beta.0/ls-lint-darwin-arm64 && chmod +x ls-lint && ./ls-lint
# Windows
https://github.com/loeffel-io/ls-lint/releases/download/v2.0.0-beta.0/ls-lint-windows-amd64.exe をダウンロードして実行
# Docker
docker run --rm -v /path/to/project:/data lslintorg/ls-lint:1.11.2
ls-lintの設定方法
ls-lintの設定は、.ls-lint.ymlという一つのファイルで管理されます。このファイルには、どのようにファイル名をリントするかのルールが定義されています。
以下に、.ls-lint.ymlのサンプル設定を示します:
ls:
.js: snake_case
.ts: snake_case | camelCase
.d.ts: PascalCase
.html: regex:[a-z0-9]+
ignore:
- node_modules
この設定では、各ファイル拡張子(.js, .ts, .d.ts, .html)に対する命名規則が定義されています。また、ignoreセクションには、リントから除外したいディレクトリやファイルを指定できます。
ls-lintの実行方法
設定ファイルを作成したら、プロジェクトのルートディレクトリでls-lint
コマンドを実行するだけです。これにより、ls-lintは設定されたルールに基づいてファイル名をリントし、問題があるファイアルを表示します。
注意点
ls-lintは非常に高速で、数千のファイルとディレクトリをミリ秒でリントします。
しかし、大規模なプロジェクトでは、一度にすべてのファイルをリントしようとするとパフォーマンスに影響する可能性があります。
そのため、.ls-lint.ymlのignoreセクションを利用して、リントから除外するディレクトリやファイルを適切に指定することが重要です。
また、ls-lintは全面的なユニコードサポートはしますが、特定の言語や文字セットに対する独自のリントルールを適用する場合は、その規則を明示的に設定する必要があります。
これらの注意点を念頭に置きつつ、ls-lintを活用してプロジェクトのファイルシステム構造を改善しましょう。
Discussion