web-dev-qa-db-ja.com

`npm install --save`に厳密なバージョンをpackage.jsonに追加します

npm install --save somepackageを実行すると、通常次のようなものがpackage.jsonに追加されます。

"dependencies": {
    "somepackage": "^2.1.0"
}

バージョンの先頭にキャレット(^)が付いているため、後でnpm installを実行すると、代わりにバージョン2.3.0がインストールされる可能性があります。これは、明らかな理由で望ましくない場合があります。 npm shrinkwrapは便利ですが、実際には問題を解決しません。

だから、私はいくつかの質問があります:

  1. パッケージをインストールするときに、package.jsonで特定のバージョンに設定するように指定することは可能ですか(バージョン番号の前にキャレットはありません)?
  2. パッケージをnpmに公開するとき、他の開発者がパッケージをインストールするときに、バージョンの前にキャレットを含めるというデフォルトを防ぐ方法はありますか?
61
twiz

デフォルトで正確なバージョンを指定するには、 save-exact を使用してnpm構成を変更できます。

npm config set save-exact true

save-prefix でチルダを使用して先頭に追加するバージョンを指定することもできます

また、ユーザーにマイナーバージョンまたはパッチバージョンへの更新を強制することはできません。NPMは semver を使用します。これはパッケージを公開する推奨方法です。

95

--save-exactオプションを使用して、デフォルトの動作を変更できます。

// npm
npm install --save --save-exact react

// yarn
yarn add --exact react

将来これを探している人がいる場合は、これに関するブログ記事を作成しました。

https://www.dalejefferson.com/blog/how-to-save-exact-npm-package-versions/

5
Dale Jefferson

実行:

npm install --save --save-exact my-module@my-specific-version

このアドバイス を見やすくするための答えを追加します。

0
Zanon