iLe*_*ing 400 teamcity node.js npm karma-runner
我们需要将Karma测试运行器集成到TeamCity中,为此我想给sys-engineer小脚本(powershell或其他):
从一些配置文件中获取所需的版本号(我想我可以把它作为注释karma.conf.js)
检查是否在npm的全局仓库中安装了定义版本的karma runner
如果不是,或者安装的版本比预期版本旧:选择并安装正确的版本
运行: karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
所以我真正的问题是:"如果安装了所需的软件包版本,如何检查脚本?".你应该做检查,还是npm -g install每次都可以安全地打电话?
我不想总是检查并安装最新的可用版本,因为其他配置值可能会变得不兼容
小智 513
要检查项目中的任何模块是否"旧",您应该:
package.json
'outdated'将检查package.json中定义的每个模块,并查看NPM注册表中是否有更新的版本.
下面是一个示例,显示xml2js(位于当前目录中的node_modules /中)已过时,因为存在较新的版本(0.2.7):
npm outdated
Run Code Online (Sandbox Code Playgroud)
如果要检查过时的模块并安装更新的版本,则可以执行以下操作
xml2js 0.2.6:(对于所有模块)或node_modules(仅检查/更新xml2js)
看看NPM文档:
Eri*_*son 343
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安装新版本的软件包gug*_*gol 67
要更新单个本地包:
首先找出你过时的套餐:
npm outdated
然后手动更新您想要的软件包:
npm update --save package_name
这样就无需更新本地package.json
文件.
请注意,这会将您的包更新到最新版本.
如果您在package.json文件中写了一些版本并执行以下操作:
npm update package_name
在这种情况下,您将获得有关您在package.json文件中编写的版本的下一个稳定版本(通缉).
而随着npm list (package_name)你可以找到你的本地包的当前版本.
Mat*_*att 64
一个简单的步骤:
$ npm i -g npm-check-updates && ncu -u && npm i
就这些.所有的软件包版本package.json都是最新版本.
编辑:
这里发生了什么?
安装检查更新的程序包.
使用此软件包更新您的所有软件包版本
package.json(-a是--updateAll的缩写).安装所有新版本的软件包.
Lon*_*ran 12
检查过时的包裹
npm outdated
Run Code Online (Sandbox Code Playgroud)
检查并选择要更新的包
npx npm-check -u
Run Code Online (Sandbox Code Playgroud)
Smi*_*tel 11
使用以下命令检查节点模块中的过时或漏洞。
npm audit
如果发现任何漏洞,请使用以下命令修复所有问题。
npm audit fix
如果对您不起作用,请尝试
npm audit fix -f,此命令几乎可以修复所有漏洞。一些依赖项或devDependencies锁定在package-lock.json文件中,因此我们使用-f标志强制更新它们。
如果您不想使用强制审核修复程序,则可以通过在package-lock.json和package.json文件中进行更改来手动修复依赖项版本。然后运行`npm update && npm upgrade'
从npm@5.0.0+ 开始,您可以简单地执行以下操作:
npm update <package name>
Run Code Online (Sandbox Code Playgroud)
这将自动更新package.json文件。我们不必手动更新最新版本然后使用npm update <package name>
您仍然可以使用
npm update --no-save
Run Code Online (Sandbox Code Playgroud)
(参考)
只需执行此操作即可将所有内容更新到最新版本 -
npx npm-check-updates -u
注意- 系统将提示您安装npm-check-updates. 按y并输入。
现在运行npm i。你可以走了。
您可以使用 3 个简单步骤来更新所有过时的软件包
首先,检查过时的软件包
sudo npm i -g npm-check-updates
其次,将它们全部准备好
ncu -u
终端中的结果将是这样的:
第三,更新所有内容。
npm install
就是这样。
安装npm软件包(全局或本地)时,可以使用@version语法定义要安装的版本来定义特定版本.
换句话说,执行:
npm install -g karma@0.9.2
将确保仅安装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"
}
}
Run Code Online (Sandbox Code Playgroud)
这为您提供了package.json的好处,它定义了要使用的karma版本,而不必在CI框中全局保留该配置.
要真正只更新一个软件包,请安装 NCU,然后仅针对该软件包运行它。这将触及真正的最新版本。
npm install -g npm-check-updates
ncu -f your-intended-package-name -u
Run Code Online (Sandbox Code Playgroud)
没有其他软件包,只需检查过时并更新已更新的软件包,此命令即可:
npm install $(npm outdated | cut -d' ' -f 1 | xargs -I '$' echo '$@latest' | xargs echo)
另一种方法是首先使用以下方法升级 package.json 文件:
ncu -u
Run Code Online (Sandbox Code Playgroud)
npm install
Run Code Online (Sandbox Code Playgroud)
将所有软件包更新到最新版本。ps:它会将所有软件包更新到最新版本,但是如果软件包已经是最新版本,则该软件包根本不会受到影响。
| 归档时间: |
|
| 查看次数: |
323084 次 |
| 最近记录: |