Node.js の path モジュールは、ファイルやディレクトリのパスをクロスプラットフォームで安全に処理・変換するためのユーティリティを提供します。
パスの結合と解決 (join と resolve)
const path = require('path');
// 各セグメントを結合し、結果のパスを正規化
path.join('/users', 'local', 'bin', '..');
// => '/users/local'
// 右から左へ順に絶対パスを解決 (基準は cwd)
path.resolve('src', 'index.js');
// => '/current/working/dir/src/index.js'
パスの構成要素の分解
const fullPath = '/workspace/project/src/main.ts';
path.dirname(fullPath);
// => '/workspace/project/src' // ディレクトリ名
path.basename(fullPath);
// => 'main.ts' // 拡張子を含むファイル名
path.basename(fullPath, '.ts');
// => 'main' // 拡張子を除いたファイル名
path.extname(fullPath);
// => '.ts' // ファイルの拡張子
path.parse(fullPath);
// パスをオブジェクトに詳細パース
// {
// root: '/',
// dir: '/workspace/project/src',
// base: 'main.ts',
// ext: '.ts',
// name: 'main'
// }
相対パスの算出と正規化
// パス A からパス B への相対パス
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
// => '../../impl/bbb'
// 冗長な区切り文字やピリオドを整理して正規化
path.normalize('/foo/bar//baz/asdf/quux/..');
// => '/foo/bar/baz/asdf'
プラットフォーム固有の区切り文字定数
// パス区切り文字: POSIX では '/'、Windows では '\'
path.sep;
// 環境変数 PATH の区切り文字: POSIX では ':'、Windows では ';'
path.delimiter;