目前,package.json中的所有节点模块都使用*
作为版本号,我的应用程序对这些节点模块非常稳定,所以我想在package.json中修改它们的版本号,这样我就可以了可以在其他地方运行npm install
以安装具有预期版本的节点模块。
有没有办法快速完成,而不是手动逐个更改?
例如某些控制台命令,npm fixversion module_a module_b ...
?
答案 0 :(得分:1)
您正在寻找
npm shrinkwrap
有关详细信息,请参阅the documentation here。
它将使用当前版本生成npm-shrinkwrap.json
,并且它优先于package.json,因此如果您愿意,可以删除该文件和npm update
。
更新
这是一个小脚本,它将package.json
的{{1}}版本写入新文件npm-shrinkwrap.json
:
package-lockdown.json
以上脚本也会更新var fs = require('fs');
var p = JSON.parse( fs.readFileSync( 'package.json') );
var v = JSON.parse( fs.readFileSync( 'npm-shrinkwrap.json') );
updateDependencies( p.dependencies, v.dependencies );
updateDependencies( p.devDependencies, v.dependencies );
fs.writeFileSync( 'package-lockdown.json', JSON.stringify( p, null, 2 ) );
function updateDependencies( list, v )
{
for ( var d in list )
list[d] = v[d].version;
}
,因此请务必在运行脚本之前删除该行或运行devDependencies
。