NPMパッケージの以前の正確なバージョンをインストールする方法は?


916

nvmを使用してノードv0.4.10をダウンロードし、そのバージョンのノードで動作するようにnpmをインストールしました。

Expressを使用してインストールしようとしています

npm install express -g

そして、私はエクスプレスがノードのバージョン> = 0.5.0を必要とするというエラーを受け取ります。

私はノード+のための指示に従っておりますのでまあ、これは、奇数の表現+ MongoDBのチュートリアルここで使用されるノードのv0.4.10、急行があるので、私は想定しています/ノードv0.4.10に利用可能であったこと。私の仮定が正しい場合、私の設定で動作するバージョンをフェッチするようにnpmに指示するにはどうすればよいですか?


7
ノードのバージョンを更新しないのはなぜですか?あなたが見つける壊れた振る舞いよりも多くの良い追加があるはずだと確信しています。
FABRICIOマット

1
時にはそれはオプションではありません。彼がnvmを使用してダウングレードした場合は、他のグループが彼が使用しなければならない実行可能ノードのバージョンを制御しているなどの理由が考えられます。
fool4jesus

回答:


1583

古いバージョンのパッケージをインストールする必要がある場合は、それを指定するだけです

npm install <package>@<version>

例えば: npm install express@3.0.0

--saveそのコマンドにフラグを追加して、package.json依存関係に追加することもできます。package.json依存関係で--save --save-exact指定された正確なバージョンが必要な場合は、フラグを追加することもできます。

installコマンドはここに文書化されていますhttps://docs.npmjs.com/cli/install

使用可能なパッケージのバージョンがわからない場合は、以下を使用できます。

npm view <package> versions

またnpm view、パッケージに関する他のものを表示するためにも使用できます。https://docs.npmjs.com/cli/view


4
私はそれはあなたが期待するものではないかもしれないので、これは、最寄りのメジャーバージョンと一致することをインストールすると信じstackoverflow.com/a/22345808/1074400
Aakilフェルナンデス

2
@AakilFernandes正確なバージョンを指定すると、正確なバージョンがインストールされます。セマンティックバージョンの範囲を指定すると、完全に一致しない可能性があります。その点で、installコマンドに固有の点はありません。
Bret Copeland

6
npm view <package> versions -json多くのバージョンのリストの末尾にある省略記号を避けて、すべてのバージョンを表示します。
TheDarkIn1978

5
を使用した場合npm install express@3.0.0、正確なバージョン3.0.0は取得されません。最新の3.xxバージョンが取得されます。特定のバージョンを取得するには、を使用する必要がありますnpm install express@3.0.0 --save-exact。このブログ投稿を参照してください:60devs.com/npm-install-specific-version.html
Patrick Hund

5
@PatrickHundいいえ、正確にバージョン3.0.0 npm install express@3.0.0を取得します。最新の3.xx を取得すると、それがpackages.jsonに書き込まれる方法に影響します。これは、すでに私の回答で説明しています。また、またはと組み合わせて使用する必要があります- 単独で使用するだけでは不十分です。npm install express@^3.0.0--save-exact--save-exact--save--save-dev
Bret Copeland

93

とても簡単です。例えば、これを書いてください:

npm install -g npm@4.6.1

または:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

1
latestnextバージョンタグをありがとう!
ジミーアダロ

@inapsあなた-g多くのユーザーがこのページにアクセスしてパッケージエコシステムに影響を与えようとしていることに気づかずに単にコピー/貼り付けするだけなので、フラグは特にグローバルにインストールしたいパッケージのためのものであるというメモを追加するかもしれません。私たちはみんな「あの男」
でした

73

最初に古いバージョンを削除してから、文字通り以下を実行します。

npm install express@3.X

そして安定したまたは最近の

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

12
それはリテラルXですか、それとも数値バージョン番号の代わりですか?
キース・トンプソン、

7
それはどちらか一方の質問であり、はい/いいえの質問ではありませんでした。試しnpm install express@3.Xてみましたが、うまくいったようです。それはnpmバージョン番号を解析する方法の機能または事故ですか?
キース・トンプソン、

3
@KeithThompsonはい、そうです!へへ、冗談です...それnpmはそれを解析する方法です、参照してください:docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
gonz

3
@gonz:つまり、リテラルXです。
キーストンプソン

1
なぜそれがうまくいったのかを説明したいと思います。サウラブの本来の意図やあなたが何をしようとしているのかはわかりません。3.Xは> = 3.0および<4.0を意味します。
gonz 2016年


2

次のコマンドを使用して、npmパッケージを更新できます。

npm install <package_name>@<version_number>

例: npm install yargs@12.02


1

私はこのタイプの問題を解決する一般的な方法を持っています。これは、特にリポジトリを複製してローカルで実行する場合にも役立ちますが、バージョンの分析をもう少し行う必要があります。

npm-check-updates図(https://www.npmjs.com/package/npm-check)に示すように、パッケージを使用して、最新の利用可能なバージョンで宣言されていない(package.jsonファイルによる)パッケージのバージョンを確認します。 -updates):

ここに画像の説明を入力してください

この情報を使用して、さまざまなパッケージの更新ステータスを確認し、アップグレードまたはデグレードするパッケージとそうでないパッケージを決定できます。

リストにあるすべてのパッケージを更新することを決定したと仮定するとncu -u、package.jsonファイルのみを変更するコマンドを使用できます。npm installインストールされたパッケージとpackage-lock.jsonを更新するために実行します。

次に、リポジトリの要件に応じて、必要なものを調整し、特定のバージョンをnpm view <package> versionsと でインストールします。 npm install <package>@<version>


1

npm install -g npm@version

ダウングレードしたい

npm install -g npm@3.10.10


しかし、それが地元で必要な場合は?--saveを置く必要がありますか?
AlexNikonov

はい、あなたも持っています。パッケージをローカルにダウンロードします。
Lakshay Sharma

@AlexNikonovは-g(グローバルインストールの場合、現在のプロジェクトdirに表示されます/node_modules)を--save--save-devpackage.json
省略し

0

次のコマンドを使用して、以前のバージョンのnpmパッケージをインストールできます。

npm install packagename@version


-3

Ubuntuでは、このコマンドを試すことができます。

sudo npm cache clean -f
sudo npm install -g n
sudo n stable 

特定のバージョン:sudo n stableではなくsudo n 8.11.3

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.