Node.jsで__dirnameを使用する方法
序章
__dirnameは、現在実行中のファイルを含むディレクトリの絶対パスを示す環境変数です。
この記事では、Node.jsプロジェクトに__dirnameを実装する方法について説明します。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- Node.jsの一般的な知識。 Node.jsの詳細については、Node.jsシリーズのコーディング方法をご覧ください。
このチュートリアルは、Node.jsv17.2.0およびnpmv8.2.0で検証されました。
ステップ1—プロジェクトの設定
このチュートリアルでは、次のサンプルディレクトリ構造を使用して、__dirnameがどのように機能するかを調べます。
dirname-example
├──index.js
├──public
├──src
│ ├──helpers.js
│ └──api
│ └──controller.js
├──cronjobs
│ └──hello.js
└──package.json
まず、ターミナルにdirname-exampleディレクトリを作成します。
- mkdir dirname-example
プロジェクトディレクトリに移動します。
- cd dirname-example
Node.jsプロジェクトとして初期化します。
- npm init --yes
次に、実験するディレクトリとファイルを作成します。
ステップ2—__dirnameを使用する
__dirnameを使用して、ファイルが存在するディレクトリを確認できます。
srcディレクトリのapiサブディレクトリにcontroller.jsを作成して編集します。
console.log(__dirname) // "/Users/Sam/dirname-example/src/api"
console.log(process.cwd()) // "/Users/Sam/dirname-example"
次に、スクリプトを実行します。
- node src/api/controller.js
cronjobsディレクトリにhello.jsを作成して編集します。
console.log(__dirname) // "/Users/Sam/dirname-example/cronjobs"
console.log(process.cwd()) // "/Users/Sam/dirname-example"
次に、スクリプトを実行します。
- node cronjobs/hello.js
__dirnameの値は、コンソールに出力するファイルによって異なることに注意してください。 process.cwd()メソッドも値を返しますが、代わりにプロジェクトディレクトリを返します。 __dirname変数は、ファイルが存在する場所の絶対パスを常に返します。
ステップ3—ディレクトリの操作
このセクションでは、__dirnameを使用して新しいディレクトリを作成し、それらをポイントし、新しいファイルを追加する方法について説明します。
新しいディレクトリの作成
index.jsファイルに新しいディレクトリを作成するには、path.join()の最初の引数として__dirnameを挿入し、2番目の引数として新しいディレクトリの名前を挿入します。
const fs = require('fs');
const path = require('path');
const dirPath = path.join(__dirname, '/pictures');
fs.mkdirSync(dirPath);
これで、__dirnameを絶対パスとして含むmdirSync()メソッドを呼び出した後、新しいディレクトリpicturesを作成しました。
ディレクトリを指す
もう1つのユニークな機能は、ディレクトリを指す機能です。 index.jsファイルで、変数を宣言し、__dirnameの値をpath.join()の最初の引数として渡し、静的ファイルを含むディレクトリを2番目の引数として渡します。
express.static(path.join(__dirname, '/public'));
ここでは、静的ファイルを含むpublicディレクトリを指すために__dirnameを使用するようにNode.jsに指示しています。
ディレクトリへのファイルの追加
既存のディレクトリにファイルを追加することもできます。 index.jsファイルで変数を宣言し、最初の引数として__dirnameを含め、2番目の引数として追加するファイルを含めます。
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, '/pictures');
fs.openSync(filePath, 'hello.jpeg');
openSync()メソッドを使用すると、ファイルがディレクトリ内に存在しない場合にファイルが追加されます。
結論
Node.jsは、ディレクトリを作成してポイントする方法を提供します。 そして、モジュラー環境変数を使用して既存のディレクトリにファイルを追加します。
詳細については、__ dirnameのNode.jsドキュメント、およびExpress.jsフレームワークでの__dirnameの使用に関するチュートリアルを確認してください。