.dependency-cruiser.js(設定ファイル)で定義する警告メッセージの日本語訳
7 min read
dependency-cruiser 概要
dependency-cruiserは、依存関係の可視化を行うツールである。npx depcruise --init
を実行することで、.dependency-cruiser.js
が生成される。このファイルには、依存関係の可視化に関する設定が記述されている。npx depcruise
を実行することで、依存関係の可視化を行うことができる。
設定ファイルの翻訳
npx depcruise --init
を実行すると、.dependency-cruiser.js
が生成される。中身は以下のような内容となっている。
{
"forbidden": [
{
"name": "not-to-test",
"comment": "don't allow dependencies from outside the test folder to test",
"severity": "error",
"from": { "pathNot": "^test" },
"to": { "path": "^test" }
}
]
}
コメント部分が英語になっているので、これを日本語に翻訳しておきたい。
ルールの概要
- no-circular
- この依存関係は循環関係の一部です。解決策を見直してください(例:依存関係の反転を使用する、モジュールが単一の責任を持つようにするなど)。
- no-orphans
- これは孤立したモジュールです。使用するか削除するか、あるいは依存関係の設定でこのモジュールに対する例外を追加してください。
- no-deprecated-core
- このモジュールは非推奨のNodeコアモジュールに依存しています。代替モジュールを探してください。
- not-to-deprecated
- このモジュールは非推奨のnpmモジュールに依存しています。新しいバージョンにアップグレードするか、代替モジュールを探してください。
- no-non-package-json
- このモジュールは
package.json
に記載されていないnpmパッケージに依存しています。package.json
のdependencies
にパッケージを追加して問題を解決してください。
- このモジュールは
- not-to-unresolvable
- このモジュールは、ディスク上で見つからないモジュールに依存しています。npmモジュールであれば、
package.json
に追加してください。
- このモジュールは、ディスク上で見つからないモジュールに依存しています。npmモジュールであれば、
- no-duplicate-dep-types
- このモジュールは、
package.json
に複数回記載されている外部のnpmパッケージに依存しています。これは後でメンテナンスの問題を引き起こします。
- このモジュールは、
- not-to-spec
- このモジュールはテストファイルに依存しています。テストファイルはコードをテストするためだけに存在すべきです。それ以外の用途で使用される場合、その単一責任が失われます。
- not-to-dev-dep
- このモジュールは、
package.json
のdevDependencies
セクションにあるnpmパッケージに依存しています。これは本番環境にデプロイされる可能性があります。
- このモジュールは、
- optional-deps-used
- このモジュールは、
package.json
でオプションとして指定されているnpmパッケージに依存しています。これは限られた状況でのみ意味をなすため、注意が必要です。
- このモジュールは、
- peer-deps-used
- このモジュールは、
package.json
でピア依存関係として指定されているnpmパッケージに依存しています。このモジュールがプラグインのようなものであれば問題ありませんが、それ以外の場合は注意が必要です。
- このモジュールは、
ルールの翻訳
no-circular
- この依存関係は循環関係になっています。解決策を再評価することが推奨されます(例えば、依存関係の反転を使用する、モジュールが一つの責任だけを持つようにする等)。
no-orphans
- このモジュールは孤立しており、恐らくもはや使用されていない可能性があります。使用するか削除するか、あるいは依存関係の設定でこのモジュールに対する例外を追加してください。このルールはデフォルトでは、いくつかの特定のファイル(例:
.eslintrc.js
やtsconfig.json
)には適用されません。
- このモジュールは孤立しており、恐らくもはや使用されていない可能性があります。使用するか削除するか、あるいは依存関係の設定でこのモジュールに対する例外を追加してください。このルールはデフォルトでは、いくつかの特定のファイル(例:
no-deprecated-core
- このモジュールは非推奨のNodeのコアモジュールに依存しています。代替案が存在するはずですので、それを探してください。Nodeは軽々しく非推奨にしないので、注意が必要です。
not-to-deprecated
- このモジュールは非推奨のnpmモジュール(またはそのバージョン)に依存しています。遅いバージョンにアップグレードするか、代わりとなるモジュールを見つけてください。非推奨のモジュールはセキュリティリスクとなる可能性があります。
no-non-package-json
- このモジュールは、
package.json
のdependencies
セクションに記載されていないnpmパッケージに依存しています。この状態は問題であり、(1)本番環境で利用できないか、(2)本番環境で保証されていないバージョンで利用される可能性があります。package.json
のdependencies
にこのパッケージを追加してください。
- このモジュールは、
not-to-unresolvable
- このモジュールはディスク上で解決できないモジュールに依存しています。npmモジュールであれば
package.json
に追加する必要があります。
- このモジュールはディスク上で解決できないモジュールに依存しています。npmモジュールであれば
no-duplicate-dep-types
- このモジュールは、
package.json
内で複数回(例えば、devDependencies
とdependencies
の両方で)記載されているnpmパッケージに依存しています。これは後にメンテナンスの問題を引き起こす可能性があります。
- このモジュールは、
not-to-spec
- このモジュールはテストファイル(spec)に依存しています。テストファイルはコードをテストする単一の責任を持つべきです。もしその外の何かに使用されている場合は、それを(例えば)別のユーティリティやヘルパーに分離してください。
not-to-dev-dep
- このモジュールは
package.json
のdevDependencies
セクションにリストされているnpmパッケージに依存していますが、本番環境にデプロイされる可能性があります。package.json
のdependencies
セクションにのみ記載するようにしてください。
- このモジュールは
optional-deps-used
- このモジュールは
package.json
でオプションとして指定されているnpmパッケージに依存しています。これは限られた状況でしか意味をなさないため、注意が必要です。
- このモジュールは
peer-deps-used
- このモジュールは
package.json
でピア依存として指定されているnpmパッケージに依存しています。このモジュールがプラグイン等であれば問題ないですが、それ以外の場合は注意が必要です。
- このモジュールは