Skip to content
← Back to rules

node/no-path-concat 制限

何を行うか

__dirname および __filename との文字列連結を禁止します。

なぜ問題なのか

Node.js において、__dirname および __filename のグローバル変数はそれぞれ実行中のスクリプトファイルのディレクトリパスとファイルパスを含んでいます。 開発者がこれらの変数を使って他のファイルへのパスを作成しようとする場合があります。たとえば:

js
var fullPath = __dirname + "/foo.js";

しかし、これは誤りを引き起こしやすいです。なぜなら、異なるオペレーティングシステムではパス区切り文字が異なるため、これでは跨プラットフォームに対応できません。正しく跨プラットフォームのファイルパスを作成するには、path.join() もしくは path.resolve() を使用する必要があります。

このルールに違反する 不適切な コードの例:

js
const fullPath1 = __dirname + "/foo.js";
const fullPath2 = __filename + "/foo.js";
const fullPath3 = `${__dirname}/foo.js`;
const fullPath4 = `${__filename}/foo.js`;

このルールに準拠する 適切な コードの例:

js
const fullPath1 = path.join(__dirname, "foo.js");
const fullPath2 = path.join(__filename, "foo.js");
const fullPath3 = __dirname + ".js";
const fullPath4 = __filename + ".map";
const fullPath5 = `${__dirname}_foo.js`;
const fullPath6 = `${__filename}.test.js`;

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:

json
{
  "plugins": ["node"],
  "rules": {
    "node/no-path-concat": "error"
  }
}
bash
oxlint --deny node/no-path-concat --node-plugin

参照