Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

库的依赖问题 #3

Open
rink1969 opened this issue Dec 9, 2019 · 3 comments
Open

库的依赖问题 #3

rink1969 opened this issue Dec 9, 2019 · 3 comments

Comments

@rink1969
Copy link

rink1969 commented Dec 9, 2019

rust库的依赖路径长,又非常复杂,简直跟npm有得一拼。
cita为了减少库的重复编译,使用了workspace,但是这也大大增加了库依赖冲突的概率。
目前很多依赖的库无法升级到最新版本,因为会有版本冲突。
比如 rust-lang/cargo#7651
而且相关的报错信息不准确,非常难解决。

@rink1969
Copy link
Author

rink1969 commented Dec 9, 2019

我想到的解决办法有:

  1. 建立一个util库,所有的依赖都通过util库re-export,在util库的Cargo.toml里控制依赖的版本。这样的缺点是增加依赖会比较麻烦,不过也增加了管控性,可以避免随意增加依赖。
  2. 建立一个私有仓库,控制私有仓库里库的版本。好处是侵入性比较小。现在有一些专门提供私仓服务的厂商,但是费用很贵。https://blog.mgattozzi.dev/turning-github-into-your-own-registry/ 这里有一个使用github的方案,但是操作麻烦很多。有一个比较完整的解决方案 https://mcorbin.fr/

对于我们的需求来说,仅仅为了控制依赖库的版本升级,并没有自己私有的库。那么只要把https://github.com/rust-lang/crates.io-index fork出来,修改一下即可。

@rink1969
Copy link
Author

citahub/cita-common#308
又一个依赖冲突问题
不过感觉没有什么好的解决方法。

@rink1969
Copy link
Author

跟同事讨论了一下,只能不要一下升级太多,按最小版本依赖去升级。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant