Node.jsファイルパスの達人になる!process.cwd()と__dirnameをマスターしよう
Node.jsにおけるprocess.cwd()と__dirnameの違い
process.cwd():
process.cwd()
は、現在のワーキングディレクトリを取得します。これは、Node.jsプロセスが実行されているディレクトリを指します。
例:
const cwd = process.cwd();
console.log(cwd); // 出力: /home/user/project
__dirname:
一方、__dirname
は、現在のモジュールのディレクトリを取得します。これは、モジュールのファイルが存在するディレクトリを指します。
const dirname = __dirname;
console.log(dirname); // 出力: /home/user/project/src
それぞれの使い分け
process.cwd()
と__dirname
は、以下のように使い分けることができます。
- 現在のワーキングディレクトリを取得したい場合は、
process.cwd()
を使用します。 - 現在のモジュールのディレクトリを取得したい場合は、
__dirname
を使用します。
まとめ
process.cwd()
と__dirname
は、どちらも現在のディレクトリに関する情報を提供しますが、それぞれ異なる役割を持っています。これらの違いを理解することで、Node.jsでファイルパスを正しく扱えるようになります。
// ファイル: index.js
const cwd = process.cwd();
console.log(`process.cwd(): ${cwd}`);
const dirname = __dirname;
console.log(`__dirname: ${dirname}`);
// ファイル: subdir/index.js
const cwd = process.cwd();
console.log(`process.cwd(): ${cwd}`);
const dirname = __dirname;
console.log(`__dirname: ${dirname}`);
このコードを実行すると、以下の出力が得られます。
// index.jsを実行した場合
process.cwd(): /home/user/project
__dirname: /home/user/project
// subdir/index.jsを実行した場合
process.cwd(): /home/user/project/subdir
__dirname: /home/user/project/subdir
この出力から、process.cwd()
は常に実行されているファイルのワーキングディレクトリを返し、__dirname
は常に実行されているモジュールのディレクトリを返すことがわかります。
process.cwd()
を使用して、ファイルを読み込む__dirname
を使用して、相対パスを解決する
これらのサンプルコードは、Node.jsの公式ドキュメントやチュートリアルで簡単に見つけることができます。
- path.resolve()
path.resolve()
を使用して、絶対パスを取得することができます。
const path = require('path');
const absolutePath = path.resolve('.');
console.log(absolutePath); // 出力: /home/user/project
- fs.realpathSync()
fs.realpathSync()
を使用して、シンボリックリンクを含む絶対パスを取得することができます。
const fs = require('fs');
const realpath = fs.realpathSync('.');
console.log(realpath); // 出力: /home/user/project
これらの方法は、process.cwd()
や__dirname
よりも汎用性がありますが、通常はこれらの方法で十分です。
node.js