モジュールフォルダー内のnpmモジュールのコードを変更することは可能ですか?これは推奨される方法ではないと思いますが、これを達成する他の方法はありますか?現在、モジュールのディレクトリでコードを変更しようとしましたが、変更が適用されないようです。前もって感謝します。
もちろん、標準化された形式であるため、node_modules
でパッケージの内容を変更できます。ただし、変更をコミットして再配布する必要があるため、これを行うべきではありません。
残念ながら、これに対する解決策は簡単なものではなく、これまで私が苦労してきたことです。
最初のアプローチは、リポジトリをローカルで複製し、npm link
を使用してプロジェクトで使用することです。
npm link ../path/to/my/proj
このアプローチの欠点は、それを使用するにはリポジトリを手動でダウンロードする必要があり、npm link
はリンクされたバージョンパッケージをシステムでグローバルに使用できるようにすることです。意図しない副作用があります。そうは言っても、npm link
は、パッケージへの変更をローカルでテストして上流に提供したい場合、おそらく最良のアプローチです。
次のようにして、フォークしたgitリポジトリから直接インストールすることもできます。
npm install --save $GIT_REPO_URL
ただし、このアプローチでは、gitリポジトリにアクセスするための認証情報が必要になるため、プライベートリポジトリなどを扱う場合、特にCI環境を扱う場合はさらに複雑になります。また、再現性のあるビルドを取得できるように、コミットを含める必要があります。ただし、npmリンクを使用せずにこれを開発するのは、少し面倒です。 他のインストールオプションまたは詳細については、npmのドキュメントを参照してください 。 これらのことについて心配する必要がない場合、これはかなり良いアプローチです
変更を加えたら、フォークしたバージョンをプロジェクトに次のようにインストールすることもできます。
npm install --save ../path/to/my/proj
ただし、その場合は、gitサブモジュールやgitサブツリーなどのプロジェクトの一部として、またはモノレポを使用して、他のNPMプロジェクトをプロジェクトの一部にすることができます。これはチームにとっては良いアプローチかもしれませんが、おそらくあなたがやろうとしていることに対してはやり過ぎであり、これを良いアプローチにするために考えなければならないツールがたくさんあります。
残念ながら、これまでのすべてのアプローチは、パッケージにビルドプロセスがないか、または npmのポストインストールスクリプト のようなもので自動的にビルドされることを想定しています。ただし、一部のnpmモジュールは特定のビルドディレクトリを公開することによって作成されているため、npmの内容がソースとは大きく異なります。
これらの場合、ビルドをnpmがインストールできる場所に公開する必要があります。これには、公開 スコープパッケージ 、プライベートnpmリポジトリ、またはnpmモジュールを個人のアーティファクトサーバーに公開することなどが含まれます。
node_modules
のパッケージを直接変更することはお勧めしません。パッケージを再インストールすると変更が失われ、他の人と変更を共有できないためです。たとえば、 GitHubでプロジェクトをフォークし、そこで変更を加えて、代わりにそれをパッケージとして使用します。
実験したいだけであれば、node_modules
のパッケージを変更することもできます。パッケージのpackage.json
のmain
フィールドがビルドファイルを指している場合は、代わりにこのフィールドをソースエントリファイルに変更するか、ソースを変更するたびに自分でファイルをビルドする必要があります。