Node.jsで__dirnameを使用する方法
序章
__dirname
は、現在実行中のファイルを含むディレクトリの絶対パスを示す環境変数です。
この記事では、Node.jsプロジェクトに__dirname
を実装する方法について説明します。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- Node.jsの一般的な知識。 Node.jsの詳細については、Node.jsシリーズのコーディング方法をご覧ください。
このチュートリアルは、Node.jsv17.2.0およびnpm
v8.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の使用に関するチュートリアルを確認してください。