【问题标题】:write incremental number inside a file with grunt用 grunt 在文件中写入增量数字
【发布时间】:2018-03-15 10:22:05
【问题描述】:

我正在想办法让 grunt 在文件上写入增量数字或哈希值。

我有一个名为 config.yml 的文件,其中包含:

version: 0.0.0

每次我更改一些我可以在某处指定的文件(比如所有 .js.css 文件)时,grunt 应该以某种方式增加该数字。

我见过一些缓存破坏插件,但这不是我想要的,因为我不想拥有像 config.987234892374982.ymlconfig.yml?v=1.0.0 这样的东西。我正在寻找一种方法让 grunt 在该文件中找到该数字,以有意义的方式更改它(理想情况下增量,或随机散列),然后保存文件。

你能帮忙吗?非常感谢!

【问题讨论】:

标签: javascript gruntjs versioning


【解决方案1】:

我强烈建议不要针对内部版本号之外的任何内容进行自动版本碰撞。

版本号不仅仅表明您的产品已经构建了多少次。本质上,版本号是对最终用户的语义承诺,涉及与早期版本的兼容性。 Node.js 和 npm 等使用版本控制的系统是围绕 X.Y.Z 版本号包含以下逻辑的核心概念构建的:

  1. 不具有相同 X 版本的软件将发生严重的重大变化,需要升级(或降级)人员完全重新设计他们使用软件的逻辑,在某些情况下,他们甚至不得不寻找替代方案,因为他们现在正在做的不再起作用了。
  2. 同一 X 版本中的软件可以相对轻松地更换,而无需对您自己的网站或产品进行全面更改。
  3. 同一 Y 版本中的软件无需更改任何代码即可更换,因为它应该只是错误修复和安全修复。只有解决已修复问题的代码才需要更改。
  4. 同一 Z 版本中的软件具有完全相同的来源,因此如果您有 2 个相同 Z.Y.Z 版本的副本,它们可以互换使用。

这是 NPM 和其他包管理器要求所有内容提供商遵守的核心合同。事实上,已经表明,在某些情况下,内容提供者不遵守此版本控制系统,假设语义版本控制适用的此内容的消费者发现他们的构建失败。许多消费者认为,如果 3.5.N 版本有效,则 3.5.X 系列中的任何版本都可以互换,并通过使用 3.5.X 系列的最新版本自动构建他们的代码来利用这一假设。

因此,自动将版本超出内部版本号并不是一个好主意。只有在您实际向公众发布新版本时才应该更新补丁版本,而不是在每次构建之后。仅当您向产品添加了新功能时才应该更新次要版本,而不需要对使用您的产品的软件进行重大更改。仅当您对 API 进行剧烈和破坏性的更改(例如移动和/或删除函数、函数参数、对象或属性)时,才应修改主要版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 2017-11-21
    相关资源
    最近更新 更多