A 模块依赖了 B 模块,B 模块又依赖了 C 模块。我们可以将 B 模块的依赖写死成 0.0.1 版本,但是如果 B 模块对 C 模块的依赖写的是 C@0.0.1,会怎样?
这时候 C 模块更新到了 0.0.2 版本,虽然我们安装的 B 模块是 B@0.0.1,但是安装的 C 模块却是 C@0.0.2。如果不巧这个 C@0.0.2 刚好有 bug,那我们的模块很有可能就不能正常工作了。 实际上,NPM 提供了一个叫做npm shrinkwrap的命令来解决这个问题:
NAME
npm-shrinkwrap -- Lock down dependency versions
SYNOPSIS
npm shrinkwrap
DESCRIPTION
This command locks down the versions of a package's dependencies so that you can control exactly which versions of each dependency will be used when your package is installed.