node.jsでパスを操作するサンプルコードです。
実行結果は、Windowsで実行したときのものです。
絶対パスに変換する
const path = require('path');
const dir = path.resolve('C:/temp/path/sample.txt', '../dat');
console.log(dir); // => C:\temp\path\dat
相対パスを取得する
fromからtoへの相対パスを取得します。
const path = require('path');
const from = 'C:/temp/path/sample.txt';
const to = 'C:/temp/foo/bar';
console.log(path.relative(from, to)); // => ..\..\foo\bar
パスを分解する
const path = require('path');
const filename = 'C:/temp/path/sample.txt';
// ディレクトリ名を取得する
console.log(path.dirname(filename)); // => C:/temp/path
// ファイル名を取得する
console.log(path.basename(filename)); // => sample.txt
// ファイル名から拡張子を削除する
console.log(path.basename(filename, path.extname(filename))); // => sample
// 拡張子を取得する
console.log(path.extname(filename)); // => .txt
まとめて取得できます。
const path = require('path');
const parsedPath = path.parse('C:/temp/path/sample.txt');
console.log(parsedPath.root); // => C:/
console.log(parsedPath.dir); // => C:/temp/path
console.log(parsedPath.base); // => sample.txt
console.log(parsedPath.ext); // => .txt
console.log(parsedPath.name); // => sample
絶対パスかどうかを判定する
const path = require('path');
console.log(path.isAbsolute('/foo/bar')); // => true
console.log(path.isAbsolute('C:/foo/..')); // => true
console.log(path.isAbsolute('foo/bar')); // => false
パスを結合して、正規化したパスを取得する
const path = require('path');
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')); // => \foo\bar\baz\asdf
console.log(path.join('C:/foo', 'bar', '..', 'baz')); // => C:\foo\baz
パスを正規化する
const path = require('path');
console.log(path.normalize('/foo/bar//baz/asdf/quux/..')); // => \foo\bar\baz\asdf
console.log(path.normalize('C:\\temp\\\\foo\\bar\\..\\')); // => C:\temp\foo\