Tri*_*tan 23 snapshot maven npm
我有一个非常简单的工作设置:
Lib A Lib B
publish 1.0.0-SNAPSHOT -> Private Registry -> npm install
Run Code Online (Sandbox Code Playgroud)
请记住,A和B在不同的机器上(想想jenkins集群!).
在两个版本中,版本以"-SNAPSHOT"结尾,并在每个版本(A)上更新.当然,依赖的库(B,...)应该始终使用注册表中的最新版本.问题是,NPM不会重新获取相同的版本.
Lib A Lib B
small change, rebuild:
publish 1.0.0-SNAPSHOT -> Private Registry !! npm install -f
npm cache clean
!! npm install -f
rm -rf node_modules
-> npm install
Run Code Online (Sandbox Code Playgroud)
那没关系,因为我们是一个本地的npm代理:"〜/ .npmrc":
force=true
cache-min=0
cache-max=0
Run Code Online (Sandbox Code Playgroud)
但是,这并没有工作!只删除node_modules目录才有效.这不是一个有用的解决方案,因为开发人员不需要使用"rm -rf node_modules && npm install".
使用maven,这个设置有效,因为我们使用"-U"选项.这会强制maven检查更新的SNAPSHOT版本是否可用.NPM不理解SNAPSHOT的概念,但至少每次都应该询问注册表.
npm版本2.12.0
私人登记处:Sonatype Nexus™2.10.0-02
dus*_*ltz 23
想法1
如果你"滥用"SemVer的预发布部分,你可以模仿这种行为.我成功使用了以下策略:
发布您的模块,-SNAPSHOT但每次发布(-SNAPSHOT.#或-SNAPSHOT-#)时附加一个递增的数字.
例如:"x.x.x-SNAPSHOT.1"第一次发布,然后"x.x.x-SNAPSHOT.2"是第二次发布,依此类推.
确保使用一致的模式.因此,例如,如果您使用点,坚持使用点,或者如果您使用破折号,请坚持使用破折号.
对于依赖模块,您只需将您的版本声明为
"^x.x.x-SNAPSHOT"
Run Code Online (Sandbox Code Playgroud)
和NPM将获取最新版本.
由于两个原因,所有这些都有效
1.0.0-SNAPSHOT < 1.0.0-SNAPSHOT.1 < 1.0.0-SNAPSHOT.2 < 1.0.0-SNAPSHOT.3...警告:这只适用于补丁版本.技术上1.2.x-SNAPSHOT大于1.1.x-SNAPSHOT,但是,SemVer在使用预发布时不考虑这一点.
来自文档:
如果版本具有预发布标记(例如,1.2.3-alpha.3),则只有至少一个具有相同[major,minor,patch]元组的比较器也具有预发布标记时,才允许它满足比较器集.
例如,范围> 1.2.3-alpha.3将被允许匹配版本1.2.3-alpha.7,但它不会被3.4.5-alpha.9满足,即使3.4.5-alpha根据SemVer排序规则,.9在技术上"大于"1.2.3-alpha.3.版本范围仅接受1.2.3版本上的预发布标记.版本3.4.5将满足范围,因为它没有预发布标志,并且3.4.5大于1.2.3-alpha.7.
想法2 再次,这是另一个"黑客".如果你没有丢失SemVer的补丁部分,你可以将你的版本发布为
x.x.<unix epoch ms>.
unix时代不断增加(至少到2038年为32位)并且每次发布时,您将始终发布更大的版本.
| 归档时间: |
|
| 查看次数: |
13709 次 |
| 最近记录: |