如何正确更新库部件

How to properly update the library parts

几周前我开始了一个新的 CLI 项目,它在 v0.24.0 中安装了 CLI,在 v1.0.8 中安装了框架。

由于他们本周发布了一些更新(CLI v0.26.0、框架 v1.1.0、...),我想知道如何正确更新核心组件。

我的 package.json 中有以下 aurelia 依赖项:

{
  // ...
  "dependencies": {
    "aurelia-animator-css": "^1.0.0",
    "aurelia-api": "^3.1.1",
    "aurelia-authentication": "^3.2.0",
    "aurelia-bootstrapper": "^1.0.0",
    "aurelia-fetch-client": "^1.1.0",
    // ...
  },
  "devDependencies": {
    "aurelia-cli": "^0.24.0",
    "aurelia-testing": "^1.0.0-beta.2.0.0",
    "aurelia-tools": "^0.2.2",
    // ...
  },
  // ...
}

与 NPM 上的最新版本相比,以下软件包已过时:

由于所有这些软件包都使用 caret version range,因此当 运行 npm update.

时,大多数软件包不会自动更新到最新版本

这是我的问题

  1. 当我想将框架更新到最新状态时,是否必须手动更新 package.json 中提到的每个包的版本? (似乎很明显)
    • 我知道我可以在 package.json 中使用 tilde or x ranges 之类的东西,但这并不是我想要的,因为我想明确允许安装新版本以确保其他开发人员或构建服务器将无法使用完全不同的版本...
  2. 是否有一些简化的流程来找出我使用的每个框架包的最新版本号,或者我是否必须像我在写这个问题时那样手动 "crawl" 来自 npm.org 的版本?
  3. 我的 package.json 文件中的任何地方都没有提到 aurelia-framework 软件包,运行 npm update 也没有自动更新它。我该如何实际更新它?

CLI 的文档说要添加一个 NPM 脚本,您可以 运行 将其全部更新到最新版本:

https://github.com/aurelia/framework/blob/master/doc/article/en-US/the-aurelia-cli.md#updating-multiple-libraries.

这意味着将类似这样的内容添加到您的 package.json 脚本部分:

    "au-update": "npm i aurelia-binding@latest aurelia-bootstrapper@latest aurelia-dependency-injection@latest aurelia-event-aggregator@latest aurelia-framework@latest aurelia-history@latest aurelia-history-browser@latest aurelia-loader@latest aurelia-loader-default@latest aurelia-logging@latest aurelia-logging-console@latest aurelia-metadata@latest aurelia-pal@latest aurelia-pal-browser@latest aurelia-path@latest aurelia-polyfills@latest aurelia-route-recognizer@latest aurelia-router@latest aurelia-task-queue@latest aurelia-templating@latest aurelia-templating-binding@latest aurelia-templating-resources@latest aurelia-templating-router@latest aurelia-testing@latest aurelia-dialog@latest -S",

第一次升级时,它会在 package.json 中添加对它们的引用,因此依赖项部分变得更大/添加了所有缺少的嵌套依赖项。

另一种方法是使用 NPM 包对所有包 npm check updates 以及非 Aurelia 包执行这些检查。

这允许你做:

ncu

检查哪些包已过时,

ncu -u

将它们全部升级到最新版本,忽略 semver 限制。