npm检查并更新软件包(如果需要)

我们需要将Karma测试运行程序集成到TeamCity中,为此,我想给sys-engineers一个小的脚本(powershell或其他东西),该脚本可以:

  1. 从一些配置文件中提取所需的版本号(我想我可以将其作为注释放在karma.conf.js

  2. 检查npm的全局回购中是否安装了已定义的业力赛跑者版本

  3. 如果不是,或者安装的版本比预期的要旧:请获取并安装正确的版本

  4. 运行: karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run

所以我真正的问题是:“如果安装了所需版本的软件包,如何才能签入脚本?”。您应该进行检查,还是npm -g install每次都可以安全拨打电话

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

Mandy小小斯丁2020/03/17 16:52:22

要仅更新一个软件包,请安装NCU,然后仅对该软件包运行。这将达到真正的最新。

npm install -g npm-check-updates

ncu -f your-intended-package-name -u
乐Mandy2020/03/17 16:52:22

npm@5.0.0+开始,您可以执行以下操作:

npm update <package name>

这将自动更新package.json文件。我们不必手动更新最新版本,然后使用npm update <package name>

您仍然可以使用

npm update --no-save

参考

蛋蛋十三2020/03/17 16:52:22

在安装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"
 }
}

这为您带来了package.json的好处,它定义了要使用的业力的版本,而不必将该配置全局保留在CI框中。

Gil小哥番长2020/03/17 16:52:21

检查过时的包裹

npm outdated

检查并选择要更新的软件包

npx npm-check -u

npm oudated img

npx npm-check -u img

西门ItachiL2020/03/17 16:52:21
  • 要更新单个本地软件包:

    1. 首先找出您过时的包裹:

      npm outdated

    2. 然后,将您要手动更新的一个或多个软件包更新为:

      npm update --save package_name

这样就不必更新本地package.json 文件。

请注意,这会将您的软件包更新为最新版本。

  • 如果您在package.json文件中写入某些版本并执行以下操作:

    npm update package_name

    在这种情况下,您将仅获得有关您在package.json文件中编写的版本的下一个稳定版本(所需)

并且,npm list (package_name)您可以找到本地软件包的当前版本。

梅凯2020/03/17 16:52:21

一个简单的步骤:

$ npm i -g npm-check-updates && ncu -u && npm i

就这些。中的所有软件包版本package.json都是最新的。

编辑:

这是怎么回事

  1. 安装一个可以为您检查更新的软件包。

  2. 使用此软件包来更新您的所有软件包版本package.json(-a是--updateAll的缩写)。

  3. 安装软件包的所有新版本。

宝儿宝儿2020/03/17 16:52:21

还有一个名为“新鲜”的模块npm-check

npm检查

检查过时,不正确和未使用的依赖项。

在此处输入图片说明

它还提供了一种方便的交互方式来更新依赖关系。

Stafan西门2020/03/17 16:52:21

npm outdated将标识应更新的软件包,npm update <package name>并可用于更新每个软件包。但是在npm@5.0.0之前,npm update <package name>不会更新package.json中的版本,这是一个问题。

最好的工作流程是:

  1. 识别过期的软件包
  2. 更新package.json中的版本
  3. 运行npm update以安装每个软件包的最新版本

签出npm-check-updates以帮助此工作流程。

  • 安装npm-check-updates
  • 运行npm-check-updates以列出哪些软件包已过期(基本上与running相同npm outdated
  • 运行npm-check-updates -u以更新package.json中的所有版本(这是神奇的调味料)
  • npm update像往常一样运行,以基于更新的package.json安装软件包的新版本。
LEY老丝2020/03/17 16:52:21

要检查项目中的任何模块是否“旧”:

npm outdated

过时的 ”将检查其中定义的每个模块,package.json并查看NPM注册表中是否有较新的版本。

For example, say xml2js 0.2.6 (located in node_modules in the current project) is outdated because a newer version exists (0.2.7). You would see:

xml2js@0.2.7 node_modules/xml2js current=0.2.6

To update all dependencies, if you are confident this is desirable:

npm update

Or, to update a single dependency such as xml2js:

npm update xml2js