版本号作为文件名的一部分


15

我看到某些软件的文件名中包含版本号,而其他软件则没有。我更习惯于后一种类型,并且我认为这种类型更为流行,但是有时我在javascript库中看到前一种类型。例如,jQuery的文件名为like jquery-2.1.0.js而不是jquery.js。每当我更新这些类型的文件时,都必须在其他程序中查找加载这些文件的位置,并更改它们所引用的文件名,并手动删除这些库的旧版本。这对我来说很不方便,因此我宁愿重命名文件以排除版本号,并保持所引用的文件名不包括版本号。

我怀疑这些数字是用于某种版本控制的,但是不清楚何时以及如何使用它们。

  • 在文件名中包含版本号的优缺点是什么?
  • 对于文件名中的哪些软件或语言区域使用版本号,而哪些区域/语言不使用版本号,是否存在事实上的共识?如果是这样,那有什么口粮吗?

3
最大的优势是,您可以确保在准备变化之前就不会发生重大变化
棘手的怪胎2014年

@ratchetfreak准备就绪时不更新。你呢?
sawa 2014年

2
@sawa假设jQuery.com/jquery.js是最新版本的URL,这就是您的代码所引用的。如果jQuery将发布根本性更新,将会发生什么?当然,您可以链接到自己的本地副本,但是我认为这就是棘轮怪胎的意思
11684

@ 11684我明白了,我明白了。
sawa 2014年

1
我要指出的是,在jquery的示例中,Google和cdnjs.com CDN托管版本都将版本放在目录树中,而不是文件名中。(来自jquery.com的jquery CDN和Microsoft的文件名均具有该版本。)
Brian S

Answers:


24
  1. 指定所需的版本很有意义。您可能依赖的行为可能已经改变,所以更新并不总是更好。首先,测试新版本的库是否适合您。然后,显式更新。

  2. 对于Web资源,在缓存的上下文中,将版本作为文件名的一部分很重要。对于像这样的静态资源,jquery.js您将需要很长的缓存时间才能重新获取。但是,在更新期间,您希望代码立即使用新版本,而不是让客户在第二天左右切换到新版本。由于foo-1.2.3.js是不同的资源作为foo-1.2.4.js,无缓存会碍事。


1
+1,尽管我认为这个答案有点单边。实际上,在某些情况下,“无版本号”可能是更好的选择。请参阅下面的答案。
布朗

3

(不包括@amon提到的Web缓存情况):我假定您为程序使用制作了第三方库的本地副本,否则显然需要版本号。您正在开发的软件系统中此类第三方库的使用场景可能是以下两种之一:

  • 程序中使用lib的所有部分都应始终共享相同版本的lib(最好是“最新”),并且您将不时更新lib。然后将版本号作为文件名的一部分确实很繁琐,实际上,我建议尽可能从文件的本地副本中删除版本号。请注意,如果您有信心第三方供应商保持该lib与以前的版本基本向下兼容,那么这只是个好主意。

  • 您希望程序的某些部分需要版本A,而其他一些部分则需要版本B。那么您显然需要第三方lib的版本号。请注意,当您在引入新版本之后无法立即使用lib轻松测试所有软件部分时,也会发生这种情况。

如果您自己是图书馆供应商,则默认情况下应包括版本号,但该库的用户应自己决定是保留该编号还是将其剥离。


是。你是对的。我刚才提到了您的两个案例中的第一个。
sawa 2014年

1
@sawa:请注意您的示例是jquery,其中amon的网络缓存参数适用。我的回答背后的原因是要解释“无版本号”可能是更好的选择的不同情况。
Doc Brown
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.