我想在我的 package.json 中编写已安装(!= 最新可用)模块的固定依赖项版本。
这些是替代解决方案,不能满足我的要求:
-
将最新的可用版本写入 package.json。
-
npm shrinkwrap 将依赖项写入 npm-shrinkwrap.json而不是 package.json
我不想使用收缩包装,因为它只是另一个工具和附加配置文件,用于解决可以解决的问题。或者可以调整收缩包装以将所有版本从 npm-shrinkwrap.json 写入 package.json ?
我写了一个脚本,它以 package.json 语法从收缩包装文件中提取版本:
node
var sw = require('/path/to/npm-shrinkwrap.json');
for (var key in sw.dependencies) { console.log('"' + key + '": "' + sw.dependencies[key].version + '",') }
但它很丑陋,不适用于开发依赖项。
由于依赖项的依赖项也将获得更新,因此策略不是项目符号证明的。最好将 npm 5 与 https://docs.npmjs.com/files/package-locks 收缩包装或具有 https://yarnpkg.com/lang/en/docs/yarn-lock/的纱线一起使用