Node.jsのパスモジュールの概要
多くの人は、ノードの最も便利な組み込みモジュールの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.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.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.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.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
🎉これで完了です。 この記事で取り上げるのはこれだけです。 ここで説明されているものよりもパスへの道がたくさんあることを覚えておいてください。公式のパスドキュメントをチェックすることをお勧めします。 うまくいけば、あなたは何かを学びました、そして読んでくれてありがとう!