web-dev-qa-db-ja.com

自分のレジストリなしでプライベートNPMモジュールをインストールする方法?

私は共有コードをいくつか取り、それをNPMモジュールに入れました。中央のレジストリにアップロードしたくありません。問題は、どうやって他のプロジェクトからインストールするのですか?

明らかな方法はおそらく私自身のNPMレジストリをセットアップすることですが、資料によれば、それは多くの面倒を含みます。

ローカルファイルシステム上にあるNPMモジュールをインストールすることはできますか、それともgitからインストールすることさえできますか?

npm install --from-git git@server:project
301
futlib
cd somedir
npm install .

または

npm install path/to/somedir

somedirはその中にpackage.jsonを含まなければなりません。

それはgitについても知っています:

npm install git://github.com/visionmedia/express.git
244
mihai

あなたのプライベートnpmモジュールに追加

"private": true 

あなたのpackage.jsonに

それから、他のモジュールでプライベートモジュールを参照するには、package.jsonでこれを使用します。

{
    "name": "myapp",
    "dependencies": {
        "private-repo": "git+ssh://[email protected]:myaccount/myprivate.git#v1.0.0",
    }
}
500
250R

ローカルファイルシステム上にあるNPMパッケージをインストールすることができますか、それともgitからインストールすることさえできますか?

はい、できます!ドキュメントより https://docs.npmjs.com/cli/install

パッケージは以下のとおりです。

  • a)package.jsonファイルで記述されたプログラムを含むフォルダ
  • b)次のものを含むgzipされたtarball
  • c)(b)に解決されるURL
  • d)(c)でレジストリに公開されている<name>@<version>
  • e)(d)を指す<name>@<tag>
  • f)(e)を満たす「最新の」タグを持つ<name>
  • g)(b)に解決される<git remote url>

NPMは華麗ではないですか?

59
Colonel Panic

2016年1月に更新

他の答えに加えて、チームのコンテキストでプライベートモジュールを利用可能にしたいというシナリオがある場合があります。

GithubBitbucketはチームを生成するという概念をサポートしていますAPI Key。このAPIキーをpasswordとして使用して、このチームとしてのAPIリクエストを実行できます。

private npm modulesaddに

"private": true 

あなたのpackage.json

それから、他のモジュールでプライベートモジュールを参照するには、package.jsonでこれを使用します。

    {
        "name": "myapp",
        "dependencies": {
            "private-repo":
"git+https://myteamname:[email protected]/myprivate.git",
        }
    }

ここでチーム名= myteamname、そしてAPIキー= aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4

ここで私はbitbucketリポジトリを参照しますが、それはgithubを使ってもほとんど同じです。

最後に、代替手段として、$ 7 /月を支払うことを本当に気にしていないのであれば、 になります。箱から出してプライベートNPMモジュール

43
arcseldon

FWIW:民間組織のリポジトリを扱うとき、私はこれらすべての答えに問題がありました。

以下は私のために働いた:

npm install -S "git+https://[email protected]/orgname/repositoryname.git"

例えば:

npm install -S "git+https://[email protected]/netflix/private-repository.git"

なぜ私が他の答えが私のためにうまくいかなかったのか完全にはわからない、なぜならそれらは私がグーグルに当たってこれを見つける前にfirstを試みた回答。そして他の答えは私が過去にやったことです。

うまくいけば、これは他の誰かに役立ちます。

27
Ben Lesh

私はこれと同じ問題を抱えていて、何度か調べてみたところ、Reggie( https://github.com/mbrevoort/node-reggie )が見つかりました。かなりしっかりしています。これにより、NPMモジュールをプライベートサーバーに軽量に公開できます。完璧ではありません(インストール時の認証なし)、それでもまだ若いですが、私はそれをローカルでテストしました。

それは...(そしてこれは彼らのドキュメントからだけです)

npm install -g reggie
reggie-server -d ~/.reggie

それからあなたのモジュールディレクトリにcdしてください...

reggie -u http://<Host:port> publish 
reggie -u http://127.0.0.1:8080 publish 

最後に、そのURLを直接npm installコマンドで使用するか、package.json内から使用するだけでreggieからパッケージをインストールできます。

npm install http://<Host:port>/package/<name>/<version>
npm install http://<Host:port>/package/foo/1.0.0

または..

dependencies: {
    "foo": "http://<Host:port>/package/foo/1.0.0"
}
8
bwest87

以下のようにアクセスしやすい方法でコードを構成してください。これが可能な場合.

  • NodeProjs\Apps\MainApp\package.json

  • NodeProjs\Modules\DataModule\package.json

MainApp内@NodProjs\Apps\MainApp \

npm install --S ../../Modules/DataModule

package.jsonを次のように更新する必要があるかもしれません:

 "dependencies": {
       "datamodule": "../../Modules/DataModule"
}

これは私の状況ではうまくいきました。

6
C0r3yh

arcseldonの答え から始めて、チーム名がURLに必要であることがわかりました。

npm install --save "git+https://myteamname@[email protected]/myteamname/myprivate.git"

また、APIキーはチームでのみ利用でき、個々のユーザーでは利用できません。

3
Kramer

Npmは今無制限 プライベートホストモジュール を$ 7/user/monthで提供しています。

cd private-project
npm login

あなたのパッケージでjson set "name": " @username/private-project"

npm publish

それからあなたのプロジェクトを要求します:

cd ../new-project
npm install --save @username/private-project
3
roo2

Node.jsで構築された軽量のプライベートnpmプロキシレジストリである Verdaccio をこの目的に使用できます。また、無料でオープンソースです。 Verdaccioを使用することにより、単純なプライベートnpmレジストリのようにそれほど面倒な作業は必要ありません。

あなたはそれをインストールして実行する方法についての詳細な情報を見つけることができます 彼らのウェブサイトで しかし、ここに手順があります:

node >=8.xが必要です。

    // Install it from npm globally
    npm install -g verdaccio

    // Simply run with the default configuration that will Host the registry which you can reach at http://localhost:4873/
    verdaccio

    // Set the registry for your project and every package will be downloaded from your private registry
    npm set registry http://localhost:4873/

    // OR use the registry upon individual package install
    npm install --registry http://localhost:4873

また、公開されているDockerに簡単に公開できるようにdockerがあり、設定した方法で他の人に配布できるプライベートnpmリポジトリがあることを確認できます!

1
Dominik

これは私が探していたもの でした

# Get the latest from GitHub, public repo:
$ npm install username/my-new-project --save-dev
# Bitbucket, private repo:
$ npm install git+https://token:[email protected]/username/my-new-project.git#master
$ npm install git+ssh://[email protected]/username/my-new-project.git#master

# … or from Bitbucket, public repo:
$ npm install git+ssh://[email protected]/username/my-new-project.git#master --save-dev
# Bitbucket, private repo:
$ npm install git+https://username:[email protected]/username/my-new-project.git#master
$ npm install git+ssh://[email protected]/username/my-new-project.git#master
# Or, if you published as npm package:
$ npm install my-new-project --save-dev
1
Isaiah

私はプライベートgithubリポジトリで以下を使用します。

npm install github:mygithubuser/myproject
1
Lars

マシンがファイアウォールの下にある場合でも、パブリックGithubリポジトリからインストールするように設定します。

dependencies: {
   "foo": "https://github.com/package/foo/tarball/master"
}
1
Alex Belozerov

とても簡単 -

npm config set registry https://path-to-your-registry/

実際にはこの行をregistry = "https://path-to-your-registry"/Users/<ur-machine-user-name>/.npmrcに設定しています

明示的に設定した値、またはデフォルトで設定された値はすべて - npm config listで確認できます。

0
sapy