如何清除及禁用NX远程缓存?本地缓存清除后仍生效问题
解决NX远程缓存导致dist目录为空的问题
一、NX远程缓存的本质
你清理本地缓存(npm cache clean --force或nx reset)没用,核心原因是NX的远程缓存会把构建结果存到远程服务器(比如Nx Cloud或自定义存储服务),本地缓存清空后,它还是会直接从远程拉取缓存结果,跳过实际构建步骤,自然dist目录依旧是空的。
二、禁用远程缓存的几种方式
1. 单次强制构建(临时禁用)
直接在NX命令后加参数跳过缓存:
nx run build --skip-nx-cache
如果习惯用npm脚本调用,注意必须用npm run build而非npm build(npm build是npm内置命令,不对应你项目里的自定义构建脚本),正确传递参数的命令是:
npm run build -- --skip-nx-cache
2. 永久禁用远程缓存
修改项目根目录的nx.json配置文件:
找到tasksRunnerOptions下的default配置块,把远程缓存的runner替换为本地缓存runner:
{ "tasksRunnerOptions": { "default": { "runner": "@nrwl/workspace/tasks-runners/default", "options": { "cacheableOperations": ["build", "test", "lint"] } } } }
默认如果配置的是@nrwl/nx-cloud就是远程缓存模式,换成上述本地runner后,NX只会使用本地缓存,不再调用远程存储。
3. 临时全局禁用(环境变量方式)
在终端设置环境变量,当前会话内生效:
# Linux/macOS export NX_REMOTE_CACHE=false # Windows(PowerShell) $env:NX_REMOTE_CACHE = "false"
三、彻底清除远程缓存(如果需要清理旧结果)
如果要删掉远程缓存里的旧构建记录:
- 用Nx Cloud的话,登录Nx Cloud控制台找到对应项目,手动清除缓存;
- 用自定义远程存储(比如S3、阿里云OSS)的话,直接删除存储路径下的缓存文件即可。
内容的提问来源于stack exchange,提问作者Jeanluca Scaljeri
相关产品推荐
相关产品推荐

