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

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

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

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


当前回答

没有额外的包,只是检查过时的和更新那些是,这个命令将做:

npm install $(npm expired | cut -d' ' -f 1 | sed '1d' | xargs -I '$' echo '$@最新' | xargs echo)

其他回答

如果你想把一个包升级到最新版本(主要版本、次要版本和补丁版本),在包名后面加上@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 outdated

' expired '将检查package中定义的每个模块。查看NPM注册表中是否有更新的版本。

例如,xml2js 0.2.6(位于当前项目中的node_modules中)已经过时,因为存在一个更新的版本(0.2.7)。你会看到:

xml2js@0.2.7 node_modules/xml2js current=0.2.6

更新所有依赖项,如果你确信这是可取的:

npm update

或者,更新单个依赖项,如xml2js:

npm update xml2js

更新包。Json版本号,添加——save标志:

npm update --save

NPM命令更新或修复某些依赖清单文件中的漏洞

Use below command to check outdated or vulnerabilities in your node modules. npm audit If any vulnerabilities found, use below command to fix all issues. npm audit fix If it doesn't work for you then try npm audit fix -f, this command will almost fix all vulnerabilities. Some dependencies or devDependencies are locked in package-lock.json file, so we use -f flag to force update them. If you don't want to use force audit fix then you can manually fix your dependencies versions by changing them in package-lock.json and package.json file. Then run

NPM更新&& NPM升级

没有额外的包,只是检查过时的和更新那些是,这个命令将做:

npm install $(npm expired | cut -d' ' -f 1 | sed '1d' | xargs -I '$' echo '$@最新' | xargs echo)

当安装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盒上全局保存该配置。