ローカルモジュールを npm パッケージの依存関係として指定する方法
Node.js と npm におけるローカルモジュールの依存関係指定方法
相対パスを使用する
概要:
ローカルモジュールを require()
関数で読み込む際に、相対パスを指定する方法です。
メリット:
- シンプルで分かりやすい
- プロジェクトを移動しても簡単に対応できる
- パスが複雑になりやすい
- プロジェクトを共有する際に、相手側も同じモジュールをインストールする必要がある
例:
const myModule = require('./my-module');
// my-module.js はプロジェクトのルートディレクトリにある
file: プロトコルを使用する
ローカルモジュールのファイルパスに file:
プロトコルを指定する方法です。
- 相対パスよりも明確で分かりやすい
- パスが複雑になるのを防げる
- Windows では動作しない場合がある
const myModule = require('file:///path/to/my-module');
npm リンクを使用する
ローカルモジュールを npm パッケージとして登録し、npm link
コマンドを使ってプロジェクトにリンクする方法です。
- バージョン管理が可能
- 設定が少し複雑
- npm の知識が必要
- ローカルモジュールを npm パッケージとして登録する
npm init -y
npm publish
- プロジェクトでローカルモジュールをリンクする
npm link ../my-module
Yarn ワークスペースを使用する
Yarn ワークスペース機能を使って、ローカルモジュールをプロジェクトの依存関係として管理する方法です。
- プロジェクトを複数に分けて管理する場合に便利
- Yarn ワークスペースを初期化する
yarn init -W
- ローカルモジュールをワークスペースに追加する
yarn add workspace:my-module
const myModule = require('my-module');
ローカルモジュールを npm パッケージの依存関係として指定するには、いくつかの方法があります。それぞれの方法にはメリットとデメリットがあり、プロジェクトの規模や要件に応じて適切な方法を選択する必要があります。
補足
- 上記以外にも、
npm pack
コマンドを使ってローカルモジュールを tarball ファイルにして、それを依存関係として指定する方法もあります。 - 各方法の詳細については、npm のドキュメントを参照してください。
相対パスを使用する
// index.js
const myModule = require('./my-module');
console.log(myModule.add(1, 2)); // 3
// my-module.js
function add(a, b) {
return a + b;
}
module.exports = {
add,
};
file: プロトコルを使用する
// index.js
const myModule = require('file:///path/to/my-module');
console.log(myModule.add(1, 2)); // 3
// my-module.js
function add(a, b) {
return a + b;
}
module.exports = {
add,
};
npm リンクを使用する
// index.js
const myModule = require('my-module');
console.log(myModule.add(1, 2)); // 3
// package.json
{
"name": "my-project",
"version": "1.0.0",
"dependencies": {
"my-module": "file:../my-module"
}
}
// my-module/package.json
{
"name": "my-module",
"version": "1.0.0",
"main": "index.js"
}
// my-module/index.js
function add(a, b) {
return a + b;
}
module.exports = {
add,
};
Yarn ワークスペースを使用する
// index.js
const myModule = require('my-module');
console.log(myModule.add(1, 2)); // 3
// package.json
{
"name": "my-project",
"version": "1.0.0",
"workspaces": [
"packages/*"
]
}
// packages/my-module/package.json
{
"name": "my-module",
"version": "1.0.0",
"main": "index.js"
}
// packages/my-module/index.js
function add(a, b) {
return a + b;
}
module.exports = {
add,
};
その他のローカルモジュールの依存関係指定方法
Git リポジトリを使用する
ローカルモジュールを Git リポジトリとして管理し、npm install
コマンドでインストールする方法です。
- 最新のモジュールを常に使用できる
- リポジトリを公開する必要がある
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/your-username/my-module.git
git push -u origin master
npm install https://github.com/your-username/my-module.git
npm パッケージとして公開する
- 公開することで、他のプロジェクトでも使用できる
npm init -y
npm publish
npm install my-module
node.js npm