我们需要将Karma测试运行器集成到TeamCity中,为此我想给sys-engineer小脚本(powershell或其他):
karma.conf.js
中)karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
所以我真正的问题是:“如果安装了所需的软件包版本,如何检查脚本?”。你应该做检查,还是每次都可以安全地打电话给npm -g install
?
我不想总是检查并安装最新的可用版本,因为其他配置值可能会变得不兼容
要检查项目中的任何模块是否“旧”,您应该:
npm outdated
'outdated'将检查package.json中定义的每个模块,并查看NPM注册表中是否有更新的版本。
下面是一个示例,显示xml2js(位于当前目录中的node_modules /中)已过时,因为存在较新的版本(0.2.7):
[email protected] node_modules/xml2js current=0.2.6
如果你想检查过时的模块并安装更新的版本,你可以这样做:npm update
(适用于所有模块)或npm update xml2js
(仅检查/更新xml2js)
看看NPM文档:
要真正更新一个软件包安装NCU,然后只为该软件包运行它。这将碰到真正的最新。
npm install -g npm-check-updates
ncu -f your-intended-package-name -u
从[email protected]+开始,你可以做到:
npm update <package name>
这将自动更新package.json
文件。我们不必手动更新最新版本,然后使用npm update <package name>
你仍然可以使用旧的行为
npm update --no-save
(Qazxswpoi)
npm outdated
将识别应更新的软件包,npm update <package name>
可用于更新每个软件包。但npm update <package name>
不会更新package.json中的版本,这是一个问题。
最好的工作流程是:
npm update
以安装每个软件包的最新版本查看npm-check-updates
以帮助完成此工作流程。
npm-check-updates
列出哪些包已过期(基本上与运行npm outdated
相同)npm-check-updates -u
来更新package.json中的所有版本(这是魔法酱)npm update
,根据更新的package.json安装新版本的软件包npm outdated
然后手动更新您想要的软件包:
npm update --save package_name
这样就没有必要更新您当地的package.json
文件。
请注意,这会将您的包更新到最新版本。
package.json
文件中写了一些版本并执行:
npm update package_name
在这种情况下,您将获得有关您在package.json
文件中编写的版本的下一个稳定版本(通缉)。使用npm list (package_name)
,您可以找到当地版本的本地软件包。
一个简单的步骤:
$ npm i -g npm-check-updates && ncu -u && npm i
就这些。 package.json
中的所有软件包版本都是最新版本。
编辑:
这里发生了什么?
- 安装检查更新的程序包。
- 使用此软件包更新
package.json
中的所有软件包版本(-a是--updateAll的缩写)。- 安装所有新版本的软件包。
npm audit
npm audit fix
npm audit fix -f
,这个命令几乎可以修复所有漏洞。某些依赖项或devDependencies在package-lock.json文件中被锁定,因此我们使用-f
标志强制更新它们。安装npm软件包(全局或本地)时,可以使用@version
语法定义特定版本以定义要安装的版本。
换句话说,执行:npm install -g [email protected]
将确保仅安装0.9.2并且如果已经存在则不会重新安装。
作为建议的一句话,我建议尽可能避免全局npm安装。许多人没有意识到如果依赖项定义了一个bin文件,它就会被安装到./node_modules/.bin/。通常,它非常容易使用package.json中定义的已安装模块的本地版本。实际上,npm脚本会将./node_modules/.bin添加到您的路径中。
作为一个例子,这里是一个package.json,当我运行npm install && npm test
时将安装我的package.json中定义的karma版本,并在运行test
脚本时使用该版本的karma(安装在node_modules / .bin / karma) :
{
"name": "myApp",
"main": "app.js",
"scripts": {
"test": "karma test/*",
},
"dependencies": {...},
"devDependencies": {
"karma": "0.9.2"
}
}
这为您提供了package.json的好处,它定义了要使用的karma版本,而不必在CI框中全局保留该配置。
没有额外的包,只需检查过时并更新那些,这个命令将执行:
npm install $(npm outdated | cut -d' ' -f 1 | xargs -I '$' echo '$@latest' | xargs echo)