我们需要将Karma测试运行器集成到TeamCity中,为此我想给系统工程师一个小脚本(powershell或其他东西):
从一些配置文件中获取所需的版本号(我想我可以把它作为一个注释放在karma.conf.js中)
检查karma runner的定义版本是否安装在npm的全局repo中
如果不是,或者安装的版本比期望的旧:选择并安装正确的版本
\Scripts-Tests\karma.conf.js——reporteteamcity——单次运行
所以我真正的问题是:“如果安装了所需版本的包,如何检入脚本?”你应该做检查,还是每次都调用npm -g install更安全?
我不想总是检查和安装最新的可用版本,因为其他配置值可能变得不兼容
如果你想把一个包升级到最新版本(主要版本、次要版本和补丁版本),在包名后面加上@latest关键字,例如:
npm i express-mongo-sanitize@latest
这将把express-mongo-sanitize从1.2.1版本更新到2.2.0版本。
如果你想知道哪些包已经过期,哪些包可以更新,可以使用npm expired命令
ex:
$ npm outdated
Package Current Wanted Latest Location Depended by
express-rate-limit 3.5.3 3.5.3 6.4.0 node_modules/express-rate-limit apiv2
helmet 3.23.3 3.23.3 5.1.0 node_modules/helmet apiv2
request-ip 2.2.0 2.2.0 3.3.0 node_modules/request-ip apiv2
validator 10.11.0 10.11.0 13.7.0 node_modules/validator apiv2
NPM expired将识别应该更新的包,NPM update <包名>可以用来更新每个包。但是在npm@5.0.0之前,npm update <包名>将不会更新包中的版本。Json是一个问题。
最佳的工作流程是:
用npm obsolete标识过期的包
更新package.json中的版本
运行npm update来安装每个包的最新版本
查看npm-check-updates来帮助完成这个工作流。
使用npm i npm-check-updates -g安装npm-check-updates
运行npm-check-updates来列出过期的包(基本上和运行npm outdated是一样的)
运行npm-check-updates -u更新包中的所有版本。Json(这是神奇的酱汁)
像往常一样运行npm update,根据更新后的package.json安装新版本的包