turbo/no-undeclared-env-vars无法识别turbo.json配置变更求助
解决Turborepo中turbo/no-undeclared-env-vars规则缓存异常的方案
核心问题定位
这是Turborepo任务缓存与ESLint本地缓存协同导致的问题:即便关闭了Turborepo的lint任务缓存,ESLint自身的本地缓存(如.next/.cache/.eslint)仍会留存旧校验结果,且Turborepo的环境变量变更未被ESLint缓存系统识别为重新校验的触发信号。
具体解决步骤
强制ESLint跳过自身缓存
修改项目(或子项目)package.json中的lint脚本,添加--no-cache参数,确保每次lint都全量重新校验:{ "scripts": { "lint": "eslint . --no-cache" } }配置Turborepo缓存触发器
在turbo.json中给lint任务添加环境变量依赖,让Turborepo识别环境变量变更并自动失效缓存:{ "pipeline": { "lint": { "cache": true, "env": ["HELLO"] }, "build": { "dependsOn": ["^build", "$HELLO"], "outputs": ["dist/**", ".next/**"] } } }这里
lint任务的env字段声明依赖HELLO变量,当变量或turbo.json相关配置变更时,会自动触发lint重新执行。清理Turborepo全局缓存
若上述方法无效,手动清除Turborepo全局缓存(默认路径~/.turbo):rm -rf ~/.turbo这会清空所有Turborepo存储的任务缓存,确保后续任务完全重新执行。
明确ESLint规则的环境变量白名单
在项目根目录.eslintrc.js中声明允许的环境变量,从根源减少规则误判:module.exports = { rules: { "turbo/no-undeclared-env-vars": [ "error", { allowList: ["HELLO"] } ] } };
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

