fix(cmd): env_set 值未变化时跳过写入,避免无谓重写 .env

env_set 原先对已存在的键无条件 sed -i 重写 .env,即使新值与当前值相同也会
改变文件 mtime。开发模式下 vite 监听 .env,任何文件事件都会触发整服务重启,
导致前端反复刷新。写入前复用 env_get 比较,值未变化则直接返回。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
kuaifan 2026-06-01 01:27:42 +00:00
parent 20b5daba50
commit f969c8145c

4
cmd
View File

@ -394,6 +394,10 @@ env_set() {
echo "" >> $WORK_DIR/.env
echo "$key=$val" >> $WORK_DIR/.env
else
# 值未变化则直接返回,避免无谓重写 .env重写会改 mtime触发 vite 全量重启/前端刷新)
if [[ "$(env_get "$key")" == "$val" ]]; then
return 0
fi
if [[ `uname` == 'Linux' ]]; then
sed -i "/^${key}=/c\\${key}=${val}" ${WORK_DIR}/.env
else