web-dev-qa-db-ja.com

別の/カスタムモジュール名でnpmを使用してパッケージをインストールするにはどうすればよいですか?

「mymodule」のような名前のgithubtarballから特定のリビジョンをインストールし、「mymoduleTemp」のような名前を付けてから、実際の名前が「mymodule」になる可能性のある異なるバージョンをロードしたいと思います。

だから、私は最初のことをどのように行うのですか?私は次のようなものを探しています:

npm install https://github.com/me/mymodule/tarball/someTag -name mymoduleTemp

それを行う方法はありますか?持っているといい:

  • Mymoduleがすでに存在する場合、mymoduleTempがインストールされたときに、それが壊されることはありません(つまり、理想的には、mymoduleとしてインストールしてから、フォルダーの名前を変更するプロセスではありません)。
15
B T

その機能を要求する問題がnpm-githubリポジトリに提出されました。

ここを読んでください: https://github.com/npm/npm/issues/294

8
hereandnow78

[email protected]以降、カスタムモジュール名でパッケージをインストールできます。 [email protected]サポートを導入 パッケージエイリアス用。

カスタムモジュール名でtarballをインストールするには、custom-name@tarball-url引数を使用します。例:特定のexpresstarballをmy-expressモジュールとしてインストールします。

npm i my-express@https://github.com/expressjs/express/archive/4.16.3.tar.gz

この機能により、npmレジストリに公開されたパッケージのエイリアスを作成することもできます。

npm i express@npm:@my-scope/express

14
Pavel Zubkou

特にブラウザの場合は、package.jsonにエイリアスを追加できます

https://github.com/defunctzombie/package-browser-field-spec

例えば:

{
  ....
  "browser": {
    "someTag": "mymoduleTemp"
  }
}

これは、 metro bundleを使用した「react-native」でも機能します。私はwebpackバンドルでテストしたことがありません。

1
bucabay

あなたはこれを行うことができます:

  1. Tarballを入手して抽出します
  2. package.jsonname@me/mymoduleTempに変更します(vim mymoduleTemp.tgzでtarballを編集することで、手順1と3をスキップできます)
  3. mymoduleTemp.tgzに圧縮します
  4. npm publish mymoduleTemp.tgzを実行します(制限したい場合を除き、--access publicを使用)
  5. メインプロジェクトで、npm install @me/mymoduleTempを実行します

スコープパッケージ として公開することをお勧めします。スコープなしのmymoduleTempとして公開すると、他の誰もその名前を使用できないためです。

スコープパッケージを公開してもnpmレジストリが汚染されていると思われる場合は、新しいtarballを独自のプライベートサーバー(またはGitHubなど)に配置し、URL経由でインストールできます。

1
Andy