2017-04-03 16 views
1

私はcliベースのツール用のNPMモジュールを作成しています。誰かがパッケージをインストールした後、彼らのpackage.jsonファイルを読む必要があります。私は構文でファイルを読む方法を知っています。私の質問は、package.jsonファイルを一貫して取得するにはどうすればいいですか、相対パスまたは絶対パスを使用する必要があります。NPMモジュール - package.jsonファイルを活用する方法は?

ので、インストールした後に、私のコードはnode_modulesフォルダ内のどこかに存在します:

package.json // I need to require this file 
node_modules/ 
    ↳ my-package/ 
    ↳ dist/ 
     ↳ my-package.js // the actual file running the code 

任意の提案/ベストプラクティス?または、適切なファイルパスを使用するだけの問題ですか?あなたは、単にそれを必要とすることができるようpackage.jsonファイルを読み込み

+1

一般的に私はそれが行わ見てきた方法は、現在の作業ディレクトリで見ることです(つまり、どこCLIコマンドが実行されている) - あなたは['process.cwd()'](https://nodejs.org/api/process.html#process_process_cwd)を使ってtディレクトリのパス。また、CWDにpackage.jsonがないと、フォルダ構造を検索するツールがかなり残っています。これは、プロジェクトのサブフォルダからコマンドを実行することができ、まだ動作することを意味します。 –

+0

素晴らしい!フィードバックをお寄せいただきありがとうございます!以下の答えはもう少し有益ですが、あなたの解決策を知ることは有益です – Nicky

答えて

2

は、非常に簡単です:

var package = require('./path/to/package.json'); 

正しい道を見つけるそう単純ではないものです。

これは非常に一般的な作業であり、コアモジュールでこれを実現する簡単な方法はありませんが、npmにはモジュールがほとんどありません。

検索 - パッケージ-JSON:

簡単にあなたが探しているファイルをpackage.json見つけます。それはpackage.jsonファイルのために親ディレクトリを拾い読みし、正しく結果を読み込みます。 ES6イテレータの設計に従うので、実装が容易でなければなりません。

親パッケージ-JSON:親パッケージ-JSONを使用して

、あなたは親package.jsonので、あなたのモジュールを使用するモジュールのpackage.jsonを見つけることができます。

検索とリードパッケージ-JSON:

検索とpackage.jsonファイルからデータを読み込みます。

参照:

関連する問題