之前使用 react+dva+antd 写一个后台管理系统,过去几个月了,react 也发布了 16。
这两天比较闲,想把 react 升级到 16,结果一升级,整个项目莫名其妙的问题一大堆,各依赖也是理也理不清,跑都跑不起来。
真是心伤,准备停止升级,不想继续浪费时间 。
只是,现在的我放弃升级,过一阵子我可能一想起升级这么浪费时间也会放弃 ,但是这个项目会一直使用下去 ,如果不升级,总有一天版本会大副落后。那时想升级应该更痛苦。
大家是怎么对待前端日新月异的更迭情况 的? 一直跟着版本走的话,很累啊
1
hlwjia 2018-01-29 22:14:38 +08:00
你可知道我每个新项目跑起来后,都会备份 node_modules
|
2
zenxds 2018-01-29 22:23:09 +08:00
时刻关注,该升早点升,有问题早发现,等过一段时间升,一堆依赖包要升,有问题你都不知道哪个引起的
|
3
SuperMild 2018-01-29 22:31:02 +08:00
公司的项目没有办法只能尽量跟上。个人项目尽量减少依赖,尽量用已经稳定的旧东西,反正其实都能做出来。练手项目就看心情了。
|
4
ck65 2018-01-29 23:18:46 +08:00 via iPhone
green keeper
|
5
thundernet8 2018-01-29 23:21:34 +08:00 via Android
一楼 你只需要备份 package.json 就行 有 Git 的话也不用备份了 在历史 commit 找就是
|
7
brickyang 2018-01-30 00:00:53 +08:00 via iPhone
按说 15 能跑的 16 不会出很大问题…如果以前写得比较规范的话…
说实话 React 的版本升级真算还好的了,react-router 的大版本升级才是令人颤抖的存在 |
8
nl101531 2018-01-30 00:09:49 +08:00 via Android
依赖管理真麻烦
|
10
yyfearth 2018-01-30 03:54:10 +08:00
@thundernet8 你错了 备份 package.json 不够:
1. 因为你 package.json 里面版本通常没有锁定 默认是可以 patch 更新“^1.1.0 ”这样 2. 就算你依赖版本锁定了 但是依赖的依赖还是没有被锁定 所以还是有不少概率由于 依赖的依赖 patch 更新引入 bug 或者上层不兼容导致 app 的 bug 3. 有时候 npm 抽风 把一堆非常基础的包给弄没了(此外国内的网络问题就不用多说了) @hlwjia 所以一般情况下 你只需要备份 package-lock.json 或者 yarn.lock 就基本上相当于备份 node_modules 了 最好前提是网络比较通畅 或者有 npm 镜像缓存 npm 的 package-lock.json 或者 yarn 的 yarn.lock 就是把解析后的版本和下载地址都锁定下来 只要下载地址还存在 就可以精确的复现 node_modules 当然万事都不是绝对的 有时候备份 npm tgz 缓存还是有必要的 搞不好 npm 就抽了 @SuperMild NodeJS 社区发展太快 无论本身还是包版本升级都太快 就算是稳定的旧东西 也很快就变得不稳定或者 deprecated 了 除非你用 Java PHP 那套 才可能稳定好多年 |
11
hlwjia 2018-01-30 08:51:51 +08:00
@yyfearth trust me. 什么 shrinkwrap 各种 lock 我都知道啊(也在用),但不够保险(当然我的做法太保守是肯定的,但是我只想多花点时间把项目写好,不是解决依赖问题
|
12
hlwjia 2018-01-30 08:53:45 +08:00
@thundernet8, @yyfearth 已经解释地很清楚了哈
|
13
guomuzz 2018-01-30 16:16:20 +08:00
确实蛋疼 有次升级报错 查找半天 最后手动进一个包里把这个包的某一个依赖的最新 git clone 下来 替换 才 tm 解决 恶心死了 替换完 直接把 node_modules 备份了
|