前端新手关于包依赖的疑问

244 天前
 unco020511

楼主原来是做服务端和 Android 的,包依赖管理都是 gradle/maven,最近团队需要开始接触前端,但我有个疑问,为啥前端的依赖都是类似 "dependencies": {"vue": "^3.0.11"}这样写,这样似乎就没有锁定一个具体版本,执行 install 时会自动去 npm 仓库下载最新的版本(同一个大版本内)

2458 次点击
所在节点    前端开发
33 条回复
unco020511
244 天前
@dongtingyue 我是使用 nvm 来管理 node 版本的,然后每个 node 版本会自带一个 npm 版本,不同项目会指定 node 版本,这样应该就没啥坑吧?
unco020511
244 天前
@wangtian2020 这样倒是也行
AoEiuV020JP
244 天前
node 对版本号有规定,少数不合群的也可以特殊处理,多数还是愿意按规矩来,
Java 这边一开始就没管,版本号可以是任意字符串,大家也都是这么做的, 所以一般都是指定特定版本,有特殊需求也有特定语法可以指定比如 gradle 的加号+,
lisongeee
244 天前
你说的这个问题在 pnpm 已经得到解决,pnpm 现在默认安装就是固定版本,然后使用 lock 文件去锁次级依赖
Wxh16144
244 天前
都说了 Lock 文件我就不补充了,另外看到 package.json 一些符号可能不太熟悉可以试试 https://semver.npmjs.com/ 参考。
madao199
244 天前
--frozen-lockfile 就能解决了 前提是你要和同事沟通好
leokun
244 天前
没有 lock 文件的话,无论如何都不可能锁定版本,因为你的直接依赖有自己的依赖,它会自动更新小版本,这是饱受诟病的问题
jchnxu
244 天前
@yzw716305797 哈哈哈笑死了
unclebb
244 天前
默认所有包维护者都理解版本规则,这样默认大版本升级可以及时修复 bug 和获取特性更新,然而现实很残酷,只能 lock 或者强行指定版本。

不过如果项目一直迭代问题也不大,有问题也会及时发现,如果是一个陈年项目突然诈尸,那就很惨烈了,别问我怎么知道的。
rabbbit
244 天前
全部锁版本和全部不锁都可能会踩坑,
最讨厌的是 npm 新添加 package 他也会去更新其他的 package ,
个人的解决方案是用户数多的、常用的不锁,很久没更新、版本小于 1.0.0 、用户量小的 package 锁版本。
Torpedo
244 天前
你一眼就看出来了问题。lock 确实在这个场景缓解了这个问题。
此外还有 nodejs 那个不太靠谱的找 lib 的方式。都被 lock 文件掩盖了
TsubasaHanekaw
243 天前
我之前直接放在容器里,install 好之后打包整个容器外发
unco020511
241 天前
@TsubasaHanekaw 这也是个思路

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1033992

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX