多くの人は、ノードの最も便利な組み込みモジュールの1つであるpathモジュールを忘れています。 これは、マシンのファイルシステム上のファイルとディレクトリのパス名を処理するのに役立つメソッドを備えたモジュールです。 この記事では、pathが提供する5つのツールを見ていきます。

パスモジュールの使用を開始する前に、次のものを要求する必要があります。

const path = require('path');

注意点:pathの動作は、OSによって少し異なりますが、この記事の範囲を超えています。 パスがPOSIXシステムとWindowsで機能する方法の違いについて詳しくは、パスのドキュメントを参照してください。

これで邪魔にならないので、pathに使用できるすべてのものを見てみましょう。

path.join

最も一般的に使用されるpathメソッドの1つは、path.joinです。 joinメソッドは、ファイルパスの2つ以上の部分を取得し、それらを1つの文字列に結合して、ファイルパスが必要な場所ならどこでも使用できるようにします。 この例では、画像のファイルパスが必要であり、画像の名前があるとします。 簡単にするために、これはpngであると想定します。

const path = require('path');

let imageName = 'bob_smith';

let filepath = path.join(__dirname, '/images/useravatars/', imageName, '.png');
// We'll talk about what __dirname does a little later on.

console.log('the file path of the image is', filepath);
// the filepath of the image is
// C:/Users/.../intro-to-the-path-module/images/useravatars/bob_smith.png
// (actual output shortened for readability)

path.joinドキュメント

path.basename

pathのドキュメントによると、path.basenameメソッドは、パスの末尾部分を提供します。 素人の用語では、ファイルパスが参照するファイルまたはディレクトリの名前を返します。 この例では、画像の名前を知りたいが、ファイルパス全体が渡されたとします。

const path = require('path');

// Shortened for readability
let filepath = 'C:/Users/.../intro-to-the-path-module/images/useravatars/bob_smith.png';

let imageName = path.basename(filepath); 

console.log('name of image:', imageName);
// name of image: bob_smith.png

今、これはクールですべてですが、拡張機能なしでそれが必要な場合はどうなりますか? 幸運なことに、path.basenameに削除するように指示する必要があります。

const path = require('path');

// Shortened for readability
let filepath = 'C:/Users/.../intro-to-the-path-module/images/useravatars/bob_smith.png';

let imageName = path.basename(filepath, '.png');

console.log('name of image:', imageName);
// name of image: bob_smith

path.basenameドキュメント

path.dirname

ファイルが含まれているディレクトリを知る必要がある場合もありますが、ファイルパスはそのディレクトリ内のファイルにつながります。 path.dirname関数はここにあります。 path.dirnameは、ファイルパスの最下位レベルのディレクトリを返します。

const path = require('path');

// Shortened for readability
let filepath = 'C:/Users/.../Pictures/Photos/India2019/DSC_0002.jpg';

let directoryOfFile = path.dirname(filepath);

console.log('The parent directory of the file is', directoryOfFile);
// The parent directory of the file is C:/Users/moose/Pictures/Photos/India2019

path.dirnameドキュメント

path.extname

ファイルの拡張子を知る必要があるとしましょう。 この例では、ファイルが画像であるかどうかを通知する関数を作成します。 簡単にするために、最も一般的な画像タイプに対してのみチェックします。 path.extnameを使用して、ファイルの拡張子を取得します。

const path = require('path');

let imageTypes = ['.png', '.jpg', '.jpeg'];

function isImage(filepath) {
  let filetype = path.extname(filepath);

  if(imageTypes.includes(filetype)) {
    return true;
  } else {
    return false;
  }
}

isImage('picture.png'); // true
isImage('myProgram.exe'); // false
isImage('pictures/selfie.jpeg'); // true

path.extnameドキュメント

path.normalize

...など、多くのファイルシステムでは、ショートカットと参照を使用してナビゲーションを簡単に行うことができます。これは、それぞれ1つのディレクトリと現在の方向を意味します。 これらは迅速なナビゲーションとテストに最適ですが、パスをもう少し読みやすくすることをお勧めします。 path.normalizeを使用すると、これらのショートカットを含むパスを、それが表す実際のパスに変換できます。 path.normalizeは、この例が示すように、最も複雑なパスでも処理できます。

const path = require('path');

path.normalize('/hello/world/lets/go/deeper/./wait/this/is/too/deep/lets/go/back/some/../../../../../../../../..');
// returns: /hello/world/lets/go/deeper

path.normalizeドキュメント

🎉これで完了です。 この記事で取り上げるのはこれだけです。 ここで説明されているものよりもパスへの道がたくさんあることを覚えておいてください。公式のパスドキュメントをチェックすることをお勧めします。 うまくいけば、あなたは何かを学びました、そして読んでくれてありがとう!