HERSHY'SのAdvent Calendar(本物)の9日目を開けたところ。
NPMおれおれAdvent Calendar 2019 – 09日目

shrinkwrap という機能を使って、パッケージがインストールされる際の依存ツリーのバージョンを固定することができます。

できるんだけど、ライブラリーでは使わない方が良さそうです。

強く非推奨

It’s strongly discouraged for library authors to publish this file, since that would prevent end users from having control over transitive dependency updates.

ライブラリー作者がこのファイルを公開することは強く非推奨 (strongly discouraged) です。エンドユーザー側での推移的な (transitive) 依存関係更新による管理の妨げになるためです。

アプリ用

じゃあ何のためかというと、アプリ用です。アプリケーションソフトウェア。例えば CLI で動作するものや、デーモンとして利用されるものです。

The recommended use-case for npm-shrinkwrap.json is applications deployed through the publishing process on the registry: for example, daemons and command-line tools intended as global installs or devDependencies.

npm-shrinkwrap.json の推奨される利用事例は、レジストリー上の公開プロセスを経由してデプロイされるアプリケーションです。例えばグローバルインストールや devDependencies を意図したデーモンやコマンドラインツールが該当します。

というわけでコードから import() するようなものは固定しないようにしましょう。

おしまい

正直「推移的な依存関係更新」というのがよくわかってないんですが、お任せした方が良いようです。

参照