- 主题:[转载]两行代码构成的 npm 包影响到了数百万项目
js 的问题是从一开始就没有标准库,很多本该由标准提供的功能都必须由第三方库提供
这都不算啥,至少还能维护。core-js 作者进监狱了,反正我暂时是不知道以后该咋办
【 在 ilovecpp (cpp) 的大作中提到: 】
: c++/java的这类库通常是合并成一个大项目,由著名组织维护。js社区的生态还挺不一样的。
--
FROM 115.188.68.*
没印象看到过新闻啊
【 在 beep (菜M.喵星耗子) 的大作中提到: 】
: 不是找了个人接手了吗
--
FROM 115.188.68.*
不依赖版本你觉得为啥会有 yarn?yarn.lock、package-lock.json 是摆样子看的吗?
倒是这年头有哪个包管理不支持 semver 和 lock 的,你说一个听听?
至于开源社区啥质量,都是混这个版的心里都没点儿数么?win8 之后不出9而是10,难道是微软脑子有病么?为啥一到 js 这边就神奇了?
【 在 littleSram (littleSram) 的大作中提到: 】
: js依赖不是指定版本,这一点很神奇
: 项目很容易因为某些依赖编译失败
--
FROM 115.188.68.*
这可真把我逗乐了
java 这么成熟,为啥包管理都学 ruby 不学 java 啊?windows 没有9是因为谁啊?
知道 semver 是啥意思么?作为 boilerplate 项目,不锁版本版本号的目的很明显,创建新项目的时候能自动获得最新的安全补丁,而不用担心功能受影响。而且实际中的情况也是,对于依赖复杂的项目,隔一两个月跑一次 yarn audit/npm audit,肯定会有大量的安全警告,并且 upgrade 正常情况下可以保证获取新版本修复安全隐患
按照 semver 的要求,minor 版本号变化是要保证向后兼容的。这次的情况是没测试明白,直接功能就有问题。这种人为的错误在任何项目都有可能发生,咋就变成包管理的机制不成熟了?
【 在 littleSram (littleSram) 的大作中提到: 】
: 我是说,指定版本,而js里很多都是默认引用包的最新版本。当编译不通过,指定版本号的时候,发现又下载不了或是不维护了。
: Rails也是这样
: 我用神奇用词不当。可能还是java太成熟了。
: ...................
--
FROM 115.188.68.*
这跟包管理有啥关系?我前面说了,js 生态系统里很多的问题是没有标准库导致的。作为最大开源社区,幺蛾子出的多也是理所当然的,谁让语言、工具每年都在发展呢。
“好好的package.json静置三天构建就失败”是什么鬼?首先,难道你的项目都没有 lock 文件,还是手动 gitignored 掉了?其次,就算是不锁 lock,除非遇到 native 工具再加上 py 版本一堆乱七八糟的问题,正常 package 都会有依赖项的版本号,而且如果不指定版本号 npm i/yarn add 都是默认不锁 patch 版本,为啥你就能遇到那么多 patch 版本号还能出问题的情况?况且知名有 native 依赖的包里,现在多数也应该不需要 py 编译了,除非还在用很多年前的版本。
package.json 里不定义工具链版本,由于 node/npm/yarn 的版本不兼容,出现奇奇怪怪的问题难道还怪工具了?好像你编译 c/c++ 库不需要关心用什么编译工具,java 库随便挑哪个 jdk 版本都能用似的
【 在 oldwatch (一条叫java的鱼◎城内风光独好) 的大作中提到: 】
: 这种“好好的package.json静置三天构建就失败”的大戏已经不止一次了
: 其他哪家包管理有这么多坑的
: 默认最新这么激进的政策就必须要有配套的强制检查措施
: ...................
--
FROM 115.188.68.*
在没有 lock 文件的情况下,如果 package.json 里没有在 resolutions 里强制指定某一个包的版本,取决于各级依赖关系。一般依赖关系中会指定大于等于 minor 或 patch 版本,也有的会锁小于 major 或 minor 版本,没道理锁到 patch 版本
在有 lock 文件的情况下,自己去看 lock 文件,别想当然。yarn 举例,手动 upgrade 才会改动 lock,不指定 --latest 应该只升 patch 版本号,连 minor 都不会动
【 在 oldwatch (一条叫java的鱼◎城内风光独好) 的大作中提到: 】
: 仅仅lock顶层包版本能挡住依赖的依赖是活的么?
: 版本锁定能逐级传递不?
--
FROM 115.188.68.*
能举个具体的例子出现过啥问题么?
说实话我真的挺好奇的,作为本版最经常忽悠 js 技术,开个 electron 项目算是家常便饭,还玩过 react native 的人,我试过的各种不成熟的库的机会应该比你们都多。为啥我这种经常在河边走的从来没掉坑里,反倒是你们连 lock 原理都搞不清的动不动就掉坑里?
【 在 littleSram (littleSram) 的大作中提到: 】
: 设计本意没错,但是实际情况是很多包依赖都是依赖最新的。结果导致出现新的问题。比如向后兼容问题。
: 所以固定有固定的好处。
: 而且我就喜欢固定的,这样我能明确知道我依赖的版本。
: ...................
--
FROM 115.188.68.*