web-dev-qa-db-ja.com

ノードモジュールフォルダー内の反応npmモジュールのコードの編集

モジュールフォルダー内のnpmモジュールのコードを変更することは可能ですか?これは推奨される方法ではないと思いますが、これを達成する他の方法はありますか?現在、モジュールのディレクトリでコードを変更しようとしましたが、変更が適用されないようです。前もって感謝します。

6
I Dav

もちろん、標準化された形式であるため、node_modulesでパッケージの内容を変更できます。ただし、変更をコミットして再配布する必要があるため、これを行うべきではありません。

残念ながら、これに対する解決策は簡単なものではなく、これまで私が苦労してきたことです。

npmリンク

最初のアプローチは、リポジトリをローカルで複製し、npm linkを使用してプロジェクトで使用することです。

npm link ../path/to/my/proj

このアプローチの欠点は、それを使用するにはリポジトリを手動でダウンロードする必要があり、npm linkはリンクされたバージョンパッケージをシステムでグローバルに使用できるようにすることです。意図しない副作用があります。そうは言っても、npm linkは、パッケージへの変更をローカルでテストして上流に提供したい場合、おそらく最良のアプローチです。

フォークされたgitリポジトリを使用する

次のようにして、フォークしたgitリポジトリから直接インストールすることもできます。

npm install --save $GIT_REPO_URL

ただし、このアプローチでは、gitリポジトリにアクセスするための認証情報が必要になるため、プライベートリポジトリなどを扱う場合、特にCI環境を扱う場合はさらに複雑になります。また、再現性のあるビルドを取得できるように、コミットを含める必要があります。ただし、npmリンクを使用せずにこれを開発するのは、少し面倒です。 他のインストールオプションまたは詳細については、npmのドキュメントを参照してくださいこれらのことについて心配する必要がない場合、これはかなり良いアプローチです

ローカルnpmモジュール

変更を加えたら、フォークしたバージョンをプロジェクトに次のようにインストールすることもできます。

npm install --save ../path/to/my/proj

ただし、その場合は、gitサブモジュールやgitサブツリーなどのプロジェクトの一部として、またはモノレポを使用して、他のNPMプロジェクトをプロジェクトの一部にすることができます。これはチームにとっては良いアプローチかもしれませんが、おそらくあなたがやろうとしていることに対してはやり過ぎであり、これを良いアプローチにするために考えなければならないツールがたくさんあります。

独自のnpmモジュールを公開する

残念ながら、これまでのすべてのアプローチは、パッケージにビルドプロセスがないか、または npmのポストインストールスクリプト のようなもので自動的にビルドされることを想定しています。ただし、一部のnpmモジュールは特定のビルドディレクトリを公開することによって作成されているため、npmの内容がソースとは大きく異なります。

これらの場合、ビルドをnpmがインストールできる場所に公開する必要があります。これには、公開 スコープパッケージ 、プライベートnpmリポジトリ、またはnpmモジュールを個人のアーティファクトサーバーに公開することなどが含まれます。

6
Kevin Raoofi

node_modulesのパッケージを直接変更することはお勧めしません。パッケージを再インストールすると変更が失われ、他の人と変更を共有できないためです。たとえば、 GitHubでプロジェクトをフォークし、そこで変更を加えて、代わりにそれをパッケージとして使用します。

実験したいだけであれば、node_modulesのパッケージを変更することもできます。パッケージのpackage.jsonmainフィールドがビルドファイルを指している場合は、代わりにこのフィールドをソースエントリファイルに変更するか、ソースを変更するたびに自分でファイルをビルドする必要があります。

1
Tholle