将所有节点模块的版本号修正为package.json中当前使用的版本号
目前,package.json中的所有节点模块都使用*
作为版本号,我的应用程序对于那些节点模块是非常稳定的,所以我想在package.json中修复它们的版本号,以便我可以在其他地方运行npm install
安装具有预期版本的节点模块。
有没有办法做到这一点,而不是一个接一个地手动改变它们?
比如一些控制台命令, npm fixversion module_a module_b ...
?
您正在寻找
npm shrinkwrap
有关更多信息,请参阅此处的文档 。
它将生成一个npm-shrinkwrap.json
与当前版本,它优先于package.json,所以你可以删除该文件和npm update
如果你愿意。
UPDATE
下面是一个小脚本,它将package.json
的版本从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
,因此在运行脚本之前一定要删除那行或者运行npm shrinkwrap --dev
。