【问题标题】:How to properly update the library parts如何正确更新库部件
【发布时间】:2017-03-06 14:36:22
【问题描述】:

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

由于他们本周发布了一些更新(CLI v0.26.0,Framework 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 上的最新版本相比,这些包中的以下包已经过时:

  • aurelia-cli 0.24.0,最新的0.26.0
  • aurelia-animator-css 1.0.0,最新1.0.1
  • aurelia-bootstrapper 1.0.0,最新的2.1.0
  • aurelia-fetch-client 1.1.0,最新的1.1.1
  • aurelia-测试^1.0.0-beta.2.0.0,最新^1.0.0-beta.3.0.0
  • aurelia-tools 0.2.2,最新的1.0.0

由于所有这些软件包都使用caret version range,因此它们中的大多数在运行npm update 时不会自动更新到最新版本。

这是我的问题

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

【问题讨论】:

    标签: updates aurelia


    【解决方案1】:

    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 限制。

    【讨论】:

    • 很好的答案! :-)
    • 没有看到关于更新的那部分,因为它只在 GitHub 页面上而不是在 docs hubs...
    • 还有一个问题:当使用 CLI 创建新项目时,为什么不是所有列在 aurelia.json 中的依赖项也在 package.json ?
    • 不知道为什么。如果您在一个完全空的项目中,您可以安装 aurelia-bootstrapper 并开始运行,而不是安装所有单独的包,因为它依赖于大多数包。 CLI 生成的项目中使用了对 bootstrapper 的相同依赖项。据我了解,npm update 只会更新您的依赖项部分中列出的依赖项,并根据指定的 semver 范围更新它们。它可以被一个选项覆盖(也可以更新子依赖项),但这看起来很冒险。
    • 我的猜测是您也可以重新安装 aurelia-bootstrapper@latest 然后根据该 package.json 中依赖项的 semver 获得最新的,这可能不是实际的最新,因为可能是昨天发布了新版本的 aurelia-x,但是依赖于特定版本的 aurelia-x 的新版本的 aurelia-bootstrapper 尚未发布。但以上可能是不正确的信息,这只是我的猜测
    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2017-01-14
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 2018-08-25
    相关资源
    最近更新 更多