私はAngularアプリでAngular-Translateというモジュールを使用しています。しかし、すべてを思い通りに動作させるためにソースコードにいくつかの小さな変更を加える必要があり、それらの変更を に保持したいと考えていますnpm install
。同僚が、ソースコードのリポジトリをフォークし、フォークしたリポジトリを依存関係として指定することを提案しました。私は次のような方法を試しました。
npm install https://github.com/myRepo/angular-translate
npm install https://github.com/myRepo/angular-translate/archive/master.tar.gz
最初はビルドなしでこのようなディレクトリを作成します。package.json、.npmignore、およびいくつかのマークダウンファイルだけです。
-angular-translate
.npmignore
.nvmrc
CHANGELOG.md
package.json
etc
2 番目はnpm install
完全なリポジトリを提供しますが、コマンドを使用したときのようにビルドは取得されませんnpm install angular-translate
。prepublish スクリプトの実行に関する議論をいくつか見たことがありますが、すべてのモジュールをインストールするときにこれをどのように実行すればよいかわかりません。また、フォークを自分のモジュールとして npm レジストリに公開しようとしましたが、やはりビルドは取得されず、それが正しい方法であるかどうかわかりません...
このトピックに関する私の無知をお詫びします。npm の経験はそれほどありません。この問題についてフィードバックをいただければ幸いです。パッケージのソース コードに変更を加える必要がある場合によくある問題のように思えます。もっと良い解決策があるでしょうか?
ベストアンサー1
を試してください。npm install <ghusername>/<repoName>
ここで、<ghUsername>
は GitHub ユーザー名 ( なし@
)、はリポジトリの名前です。これで正しくインストールされるはずです。に依存関係を保存するには、インストール コマンドでまたはフラグ<repoName>
を使用することをお勧めします。--save
--save-dev
package.json
正しく動作しない場合は、.npmignore
ファイルの内容を確認してください。
インストール コマンドに長い時間がかかっても慌てる必要はありません。git リポジトリからのインストールは、npm レジストリからのインストールよりも遅くなります。
編集:
問題は、あなたの場合、dist/
がリポジトリにコミットされていないことです ( にあるため.gitignore
)。 実際のコードが存在するのはそこです。 は、パッケージが npm レジストリに公開される前dist/
に のファイルから構築されますsrc/
が、dist/
リポジトリにコミットされることはありません。
見苦しいですが、この場合はdist/
から を削除し.gitignore
て実行する必要があります:
npm run build
git add .
git commit
git push
(まず実行したことを確認してくださいnpm install
)
その後、github からインストールできるはずです。
スクリプトを使用してこれを行う別の方法があるかもしれませんprepare
が、それが可能かどうかはわかりません。試したことがありません。編集:Cameron Tacklind は、これを行う方法を詳しく説明した優れた回答を書いています。https://stackoverflow.com/a/57829251/7127751