我们需要将Karma测试运行器集成到TeamCity中,为此我想给系统工程师一个小脚本(powershell或其他东西):

从一些配置文件中获取所需的版本号(我想我可以把它作为一个注释放在karma.conf.js中) 检查karma runner的定义版本是否安装在npm的全局repo中 如果不是,或者安装的版本比期望的旧:选择并安装正确的版本 \Scripts-Tests\karma.conf.js——reporteteamcity——单次运行

所以我真正的问题是:“如果安装了所需版本的包,如何检入脚本?”你应该做检查,还是每次都调用npm -g install更安全?

我不想总是检查和安装最新的可用版本,因为其他配置值可能变得不兼容


当前回答

只需执行此操作将所有内容更新到最新版本- NPX npm-check-updates -u

注意-系统会提示您安装npm-check-updates。按“y”并回车。

现在运行npm i,就可以开始了。

其他回答

还有一个名为npm-check的“fresh”模块:

npm-check 检查过时的、不正确的和未使用的依赖项。

它还提供了一种方便的交互式方式来使用npm-check -u更新依赖关系。

当安装npm包(全局或本地)时,你可以通过使用@version语法定义要安装的版本来定义特定的版本。

换句话说,做: NPM install -g karma@0.9.2 将确保只安装0.9.2,如果它已经存在,则不会重新安装。

作为一个建议,我建议尽可能避免全局npm安装。许多人没有意识到,如果一个依赖项定义了一个bin文件,它将被安装到。/node_modules/.bin/。通常,使用package.json中定义的已安装模块的本地版本非常容易。事实上,npm脚本会将。/node_modules/.bin添加到路径中。

作为一个例子,这里有一个包。当我运行npm install && npm test时,将安装我包中定义的karma版本。Json,并在运行测试脚本时使用该版本的karma(安装在node_modules/.bin/karma):

{
 "name": "myApp",
 "main": "app.js",
 "scripts": {
   "test": "karma test/*",
 },
 "dependencies": {...},
 "devDependencies": {
   "karma": "0.9.2"
 }
}

这给了你一揽子的好处。定义karma使用的版本,而不必在CI盒上全局保存该配置。

你可以在2022年完全自动做到这一点

安装npm-check-updates 执行命令 Ncu——医生-u 它将首先尝试您拥有的每个依赖项并运行测试,如果测试失败,它将逐个更新每个依赖项,并在每次更新后运行测试

如果您有多个具有相同节点模块内容的项目,建议使用pnpm。这将防止在每个项目中下载模块。安装后,你的问题的答案是:

pnpm up

在npm@5.0.0+上,你可以简单地做:

npm update <package name>

这将自动更新包。json文件。我们不需要手动更新最新版本,然后使用npm update <包名>

您仍然可以使用旧的行为

npm update --no-save

(参考)