Angular版本-将硬编码版本或github链接放在package.json中?

时间:2018-09-24 20:06:22

标签: angular npm angular-material

我的工作团队有一个相当新的角度应用程序,我们想要尽可能地保持最新状态,因此我们的package.json看起来像这样:

"dependencies": {
   ...
   "@angular/cdk": "github:angular/cdk-builds",
   "@angular/material": "github:angular/material2-builds",
   ...
}

这已被证明是有问题的,因为在过去的几个月中有3次我们花了几个小时来修复由于新版本的角材料(或类似的东西)推出而导致的随机编译错误。不要问我为什么,但是我们只能通过为角/材质输入特定的版本来解决最新的奇数依赖错误:

    "@angular/material": "7.0.0-beta.2",

...即使这是它应该获取的最新版本。我认为我们可能只需要保持这种状态即可。

我的问题是: 是否应该在其中保留指向github最新版本的链接? ?总是自动使我们的项目保持最新是很高兴的,但是由于事情中断,这真的很困难。

从更大的意义上讲, 通常认为什么是保持最新状态的最佳实践 ?我们是否仅需要每隔几个月就手动更新所有内容并进行测试以确保所有内容都能正常工作?

1 个答案:

答案 0 :(得分:1)

在我看来(可能并不适合所有人),我认为这是个坏主意。

例如,如果您的项目带有一个不错的连续集成系统,则您的测试可能会在本地通过,并且在您进行本地测试到CI开始下载依赖项的那一刻之间,情况将会有所改变。现在,假设您仅将管道用作连续部署(如果不进行测试,这将是一个非常糟糕的主意),那么您的本地项目和CI项目之间可能会出现重大差异。

人们已经为此奋斗了多年,并试图在项目中固定依赖项的版本+子依赖项的版本。因此,Yarn及其yarn.lock文件取得了巨大的成功。现在npm也这样做。

如果您真的想使项目保持最新状态,而不必真正手动执行该过程(对于UI lib来说,这似乎很冒险),我想说,唯一有信心做到这一点的方法是:

  • 进行了大量测试,因为您将部署可能会破坏的东西
  • 拥有大量的E2E测试,并且肯定有一些可视化工具来检查回归/截屏差异
  • 具有一些自动执行程序/自动检查功能,用于检查是否有新版本可用,如果有,请创建新的提交,运行管道,仅在所有内容为绿色时合并

我想说的是很多设置而已。 如果您每月或每2个月进行升级,就可以了。 (但是,您仍然应该有大量的测试,单元,集成,端到端和CI系统!)目前主要是屏幕截图有所不同,但希望我们在未来几个月内能获得赛普拉斯的适当支持(?)