代码之家  ›  专栏  ›  技术社区  ›  caneta

使用NPM将包更新为主要版本

  •  44
  • caneta  · 技术社区  · 6 年前

    内部a Node.js 我不清楚将包升级到主要版本的正确工作流是什么。

    让我们假设我正在 stylelint : npm install --save stylelint 默认情况下,放入 包裹json 字符串 “stylelint”:“^8.4.1” 这意味着如果我想用 npm update ,我将只获得次要版本和补丁版本(8.4.2正常,8.5.0正常,9.0.0不正常)。

    如果我与 npm outdated 我可以升级到9.0.0, npm更新 由于上述限制,无法正常工作。

    那么,如果我想升级,我应该怎么做?

    我必须手动修改我的 包裹json 要创建stylelint版本^9.0.0,请删除 node\u模块 目录并重新运行 npm install ?

    或者我只需要删除 ^ 要出租的字符 npm更新 做它的工作?

    采用的常见/最佳做法是什么?

    谢谢

    4 回复  |  直到 6 年前
        1
  •  15
  •   Shahar Shokrani    6 年前

    那么,如果我想升级,我应该怎么做?

    为了更新主要版本,您可以使用 npm-check-updates .

    看到了吗?太好了 answer .

        2
  •  12
  •   Maciej Krawczyk    3 年前

    假设您在版本3中安装了“软件包”。x并希望升级到5。x个

    您可以这样做:

    npm install the-package@5
    

    它将更新包。json和包锁。json也是如此。

        3
  •  6
  •   jwdonahue    3 年前

    或者我只需要删除^字符就可以让npm更新完成它的工作?

    采用的常见/最佳做法是什么?

    最常见/最佳的做法是永远不允许自动更新具有潜在破坏性更改的版本。工作流遍布地图,从;手动测试,然后更新包。json,用于全自动检测、测试、更新和提交包。json。

    由于缺乏并行版本控制支持,许多Java/JavaScript环境对可转换的依赖关系更改特别敏感。如果您的包对其自身的一个依赖项进行了突破性的更改,那么您的包已经对系统进行了突破性的更改。如果您的1。y、 z导致其一个依赖项从X.y.z更新为X+1。Y、 Z它引入了一个突破性的变化,因此不是一个稳定的版本1。y、 z.当包的开发人员发布一个破坏性的更改时,依赖于与您相同包名的其他包可能会被破坏。永远不要让世界陷入那种状态!

    我建议你学习 Diamond Dependency Problem 把它放在心上。您应该始终仔细测试破坏性的更改,而不要试图将它们强加给您的客户。

    正如@ShaharShokrani指出的 answer 为手动更新软件包提供了良好的工作流程。并遵守 SemVer 2.0.0 #8 ,不要忘记增加自己的主要版本号。

        4
  •  2
  •   Nick Redmark    3 年前

    您还可以删除和安装该软件包。

    npm rm package
    npm i package