- 主题:[转载]两行代码构成的 npm 包影响到了数百万项目
Java里头commons 组件大概有三五个知名大轮子
太小的东西大家都习惯于自己写一个,不差那两行
js这种一行代码一个包还真是挺可以的
【 在 ilovecpp (cpp) 的大作中提到: 】
: c++/java的这类库通常是合并成一个大项目,由著名组织维护。js社区的生态还挺不一样的。
--
FROM 180.169.205.*
这种“好好的package.json静置三天构建就失败”的大戏已经不止一次了
其他哪家包管理有这么多坑的
默认最新这么激进的政策就必须要有配套的强制检查措施
比如发布前强制跑测试之类的
一边散养一边玩心跳,那就作呗
【 在 eGust (十年) 的大作中提到: 】
: 这可真把我逗乐了
: java 这么成熟,为啥包管理都学 ruby 不学 java 啊?windows 没有9是因为谁啊?
: 知道 semver 是啥意思么?作为 boilerplate 项目,不锁版本版本号的目的很明显,创建新项目的时候能自动获得最新的安全补丁,而不用担心功能受影响。而且实际中的情况也是,对于依赖复杂的项目,隔一两个月跑一次 yarn audit/npm audit,肯定会有大量的安全警告,并且 u
: ...................
--
FROM 180.169.205.*
仅仅lock顶层包版本能挡住依赖的依赖是活的么?
版本锁定能逐级传递不?
【 在 eGust (十年) 的大作中提到: 】
: 这跟包管理有啥关系?我前面说了,js 生态系统里很多的问题是没有标准库导致的。作为最大开源社区,幺蛾子出的多也是理所当然的,谁让语言、工具每年都在发展呢。
: “好好的package.json静置三天构建就失败”是什么鬼?首先,难道你的项目都没有 lock 文件,还是手动 gitignored 掉了?其次,就算是不锁 lock,除非遇到 native 工具再加上 py 版本一堆乱七八糟的问题,正常 package 都会有依赖项的版本号,而且如果不指定版本号 npm i
: package.json 里不定义工具链版本,由于 node/npm/yarn 的版本不兼容,出现奇奇怪怪的问题难道还怪工具了?好像你编译 c/c++ 库不需要关心用什么编译工具,java 库随便挑哪个 jdk 版本都能用似的
: ...................
--
FROM 180.169.205.*
mvn是用snapshot解决这个问题
永远拉取最新实现
胆肥的话,mvn版本号也能按区间匹配永远拉最新的
【 在 littleSram (littleSram) 的大作中提到: 】
: 设计本意没错,但是实际情况是很多包依赖都是依赖最新的。结果导致出现新的问题。比如向后兼容问题。
: 所以固定有固定的好处。
: 而且我就喜欢固定的,这样我能明确知道我依赖的版本。
: ...................
--
修改:oldwatch FROM 180.169.205.*
FROM 180.169.205.*
[1.0,2.0)
[]包含,()不包含
不过说实话真用起来无穷的坑,因为会影响默认的版本冲突/适配逻辑
最多是在全局顶层pom定义一下防止下面的具体定义太自由发挥
【 在 littleSram (littleSram) 的大作中提到: 】
: 您说的是。snapshot确实是默认最新。
: 版本区间我确实没用过。
--
FROM 180.169.205.*
按这个文档 -qualififer段落,不存在优先于存在
https://cwiki.apache.org/confluence/display/MAVENOLD/Dependency+Mediation+and+Conflict+Resolution#DependencyMediationandConflictResolution-DependencyVersionRanges
<major>.<minor>.<revision>([ -<qualififer> ] | [ -<build> ])
For ordering, the following is done in order until an element is found that are not equal:
numerical comparison of major version
numerical comparison of minor version
if revision does not exist, add ".0" for comparison purposes
numerical comparison of revision
if qualifier does not exist, it is newer than if it does
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
case-insensitive string comparison of qualifier
* this ensures timestamps are correctly ordered, and SNAPSHOT is newer than an equivalent timestamp
* this also ensures that beta comes after alpha, as does rc
if no qualifier, and build does not exist, add "-0" for comparison purposes
numerical comparison of build
【 在 KDr2 (R2D2) 的大作中提到: 】
: 根据 semver 语义,2.0.0-alpha 属于这个区间么?
: 貌似 2.0.0-alpha < 2.0.0
--
FROM 180.169.205.*