214

プライベートにしたい Node.js 用のモジュールを作成したと仮定します。次の行を追加できる (すべき) ことはわかっています。

"private": "true"

また、ファイル システム パスまたは GitHub を含む git リポジトリへのリンクを使用して、このモジュールを作成package.jsonできることも知っています。npm install

また、そのようなファイル システム パスまたは git リポジトリへのリンクを に配置できることも知っていますpackage.json。そのため、このdependencies部分は次のようになります。

"dependencies": {
  "myprivatemodule": "git@github.com:..."
}

私が今望んでいるのは、最新バージョンにリンクすることではなく、特定のバージョンにリンクすることです。私が知っている唯一の可能性は、その ID を使用して特定のコミットにリンクすることです。しかし、これは0.3.1.

だから私の質問は: とにかくそのようなバージョン番号を指定して、npm にこのバージョンを含む最新のコミットの git リポジトリを検索させることは可能ですか?

そうでない場合、プロジェクトでこの問題をどのように解決しますか? コミット ID を使用していますか、またはこれに対するより良い解決策はありますか?

4

8 に答える 8

222

依存関係は、記述子を指定するregistryだけでインストールできるようにする必要があります。version

プロジェクトを公に共有しない場合は、代わりに独自のレジストリを作成して使用することができます。registry.npmjs.org

ただし、レジストリにない場合は、URLまたはGit URLで参照する必要があります。Git URL でバージョンを指定するには、タグなどの適切なをURL フラグメント<commit-ish>として末尾に含めます。

例: という名前のタグの場合0.3.1:

"dependencies": {
  "myprivatemodule": "git@github.com:...#0.3.1"
}

:上記のスニペットは、質問に投稿されたものと同じベース URL を示しています。

切り取られた部分 ( ...) は次のように入力する必要があります。

"myprivatemodule": "git@github.com:{owner}/{project}.git#0.3.1"

また、SSH アクセスが利用できない場合は、別のアドレス形式が必要になります。

"myprivatemodule": "git://github.com/{owner}/{project}.git#0.3.1"

linkOS によっては、Github から複製した別のフォルダーの依存関係にアクセスできる場合もあります。

于 2013-01-06T23:54:56.633 に答える
85

バージョンでタグまたはリリースを意味する場合、github はそれらのダウンロード リンクを提供します。たとえば、fetchバージョン 0.3.2 (npm では利用できません) をインストールする場合は、package.json以下を追加しdependenciesます。

"fetch": "https://github.com/github/fetch/archive/v0.3.2.tar.gz",

コミット ハッシュ アプローチと比較した場合の唯一の欠点は、ハッシュは変更されたコードを表さないことが保証されているのに対し、タグは置き換えられる可能性があることです。ありがたいことに、これはめったに起こりません。

アップデート:

最近私が使用するアプローチは、GitHub が提供する依存関係のコンパクトな表記法です。

"dependencies": {
  "package": "github:username/package#commit"
}

commit は、タグなどの commitish であれば何でもかまいません。GitHub の場合、イニシャルgithub:がデフォルトであるため、イニシャルを削除することもできます。

于 2014-12-24T01:14:37.137 に答える
1

複数のモジュールでこれを行っていて、バージョンをより細かく制御したい場合は、独自のプライベート npm レジストリを検討する必要があります。

このようにして、モジュールをプライベート npm レジストリに npm パブリッシュし、パブリック モジュールの場合と同じように package.json エントリを使用できます。

https://docs.npmjs.com/files/package.json#dependencies

于 2013-01-07T13:44:41.987 に答える