直接说结论:改插件源码不热重载,改profile的patch层也不热重载——尽管配置里明明写着 patchReload: live。
实测过程
| 改什么 | 怎么测 | 结果 |
|---|---|---|
| 插件源码lib/index.js | 启动后apply写一行v1;改成写v2-changed,等15秒 | 没有变化,日志仍是那一行v1 |
| profile的cordis.patch.yml | 把插件条目改成disabled: true,等15秒 | 没有变化,apply既没被撤销也没重跑 |
「live」这个词容易误解
它不等于「改了文件立刻生效」。实测两种改法都要重启进程才看得到效果。
开发期的正确循环
- 改代码。
- 重启进程(这台机器上web启动约10–20秒)。
- 看副作用文件有没有新增行——这是唯一能确认「新代码真的跑了」的方式。
别指望省掉重启。我第一次改完等了15秒没动静,还怀疑是不是文件没保存。写这条的目的是省掉你下一次同样的15秒——直接重启就对了。
为什么副作用比日志可靠
web默认不打info日志,插件里 ctx.logger.info(…) 什么都看不到。所以验证「代码是否被执行」只能靠外部可见的东西:写文件、往stdout打、或者改一个能被HTTP请求观察到的行为。