codemod-v4 icon indicating copy to clipboard operation
codemod-v4 copied to clipboard

feat: support auto migrate your v3 form

Open AshoneA opened this issue 4 years ago • 15 comments

add --migrateform to auto migrate old form

AshoneA avatar Mar 02 '20 08:03 AshoneA

@AshoneA 麻烦解决下冲突,其他 +1 👍

vagusX avatar Mar 02 '20 13:03 vagusX

已经rebase最新master

AshoneA avatar Mar 02 '20 13:03 AshoneA

@vagusX 因为昨天第一次写jscodeshift ,有不好的地方劳烦指出哈。

AshoneA avatar Mar 02 '20 13:03 AshoneA

如果转换中发现不通过会回滚吗?

zombieJ avatar Mar 03 '20 08:03 zombieJ

有一定的风险,默认不要开启,给个命令行参数开启。

afc163 avatar Mar 03 '20 08:03 afc163

给个命令行参数开启

默认是不开启的,只有额外执行才能转换

vagusX avatar Mar 03 '20 08:03 vagusX

给个命令行参数开启

默认是不开启的,只有额外执行才能转换

对的,而且这是一条单独的命令,只会转换 Form

AshoneA avatar Mar 03 '20 08:03 AshoneA

如果转换中发现不通过会回滚吗?

额, 不通过指的是?因为其实我只会对符合规则的 FormForm.Item 做转换

AshoneA avatar Mar 03 '20 08:03 AshoneA

如果转换中发现不通过会回滚吗?

额, 不通过指的是?因为其实我只会对符合规则的 FormForm.Item 做转换

@zombieJ 的意思是这个因为 v3 -> v4 的 Form 是部分 API 不兼容,这个转换假设失败了,用户有没有机会回滚掉这个变更

从目前的角度来说,用户每次运行都要保证自己的代码 git 工作区是干净的,因此在用户执行脚本的时候,如果失败了,只需要撤销 codemod 脚本运行带来的变更即可

那么针对上述问题,是否需要写到文档呢 @zombieJ @afc163

vagusX avatar Mar 03 '20 08:03 vagusX

那么针对上述问题,是否需要写到文档呢 @zombieJ @afc163

控制台里可以报一下,说 advance 转换失败,降级成兼容包之类的。

zombieJ avatar Mar 03 '20 14:03 zombieJ

换失败,降级成兼容包之类的。

我认为应该是将这个特性标注为 实验性特性,告知用户如果出现替换导致运行问题,请撤销 codemod 带来修改之类

vagusX avatar Mar 04 '20 15:03 vagusX

image

在用户输入转换命令之后给用户一个 prompt 提示怎么样?告知用户潜在的风险和之后转换失败的处理,用户也可以输入 no 来结束本次转换。

AshoneA avatar Mar 05 '20 01:03 AshoneA

转换失败后应该自动降级回原来的兼容包模式并且 console 告知当前状态转换失败,如果可以也可以列举转换失败的原因,这个过程除了开头的命令参数不需要用户额外参与。

zombieJ avatar Mar 05 '20 03:03 zombieJ

转换失败后应该自动降级回原来的兼容包模式并且 console 告知当前状态转换失败,如果可以也可以列举转换失败的原因,这个过程除了开头的命令参数不需要用户额外参与。

其实不太能做到,因为只有转换之后实际运行的时候才会知道有没有转换成功。我最初的想法是想让用户在迁移的时候能够有个工具帮他们做掉一些重复的工作,只能算是一个工具配合手动迁移使用,剩下的工作还是需要自己来手动完成。

AshoneA avatar Mar 05 '20 04:03 AshoneA

其实不太能做到,因为只有转换之后实际运行的时候才会知道有没有转换成功。我最初的想法是想让用户在迁移的时候能够有个工具帮他们做掉一些重复的工作,只能算是一个工具配合手动迁移使用,剩下的工作还是需要自己来手动完成。

这样会有非常多的答疑成本,用户转化完成后总是希望代码可以正常运行。如果我们的逻辑会有疏漏,使用时也不一定能够立刻发现。可以看看弄一些模式匹配,如果是符合某些条件再执行自动转换。要么不转,转完就能符合预期的跑。如果需要运行时 debug 找原因反而就提高用户的迁移成本了。

zombieJ avatar Mar 05 '20 05:03 zombieJ