如何清除Nx缓存

78

我有一个Nx单体库(https://nx.dev)。 它有一个包含Nx缓存的文件夹(./node_modules/.cache/nx/)。 目前其大小超过了3GB。

是否有清理该缓存的命令?

5个回答

91

1
你现在已经有足够的声望了 :) - Islombek Hasanov
这应该是答案 - undefined

75

只需删除整个“nx”缓存文件夹:

rm -rf ./node_modules/.cache/nx

2
我有一些测试偶尔会卡住,这是唯一能让事情恢复正常的方法。 - Rocío García Luque

35
这在最新版本(截至2022年2月12日)中有效。我不确定为什么尽管过去曾经有过它,但它已经不在CLI文档中了:https://nx.dev/cli/clear-cache
nx clear-cache


2
nx help 命令会输出以下内容:nx reset - 清除所有缓存的 Nx 构件 (...) [别名: clear-cache]。但是在 CLI 文档中并没有找到 reset 命令的相关说明。 - isnot2bad
1
https://nx.dev/cli/reset 可以工作,因此可能进行了重命名(具有向后兼容的别名)。 - Joe Chung
@JoeChung,谢谢你的回答。我尝试了很多例子,但由于缓存无法成功构建。清除缓存后构建正常运行。 - Archin Modi

10

没有真正的命令可以删除 Nx 缓存,除了跳过它或使用以下命令。

npx nx run build --skip-nx-cache

npx nx run test --skip-nx-cache

如果目录大小是您的问题,那么将您的节点脚本作为cron作业运行可能是一个选择。如果目录位置是您关注的问题,那么您也可以像这样配置并将其移至node_modules之外。


1
“跳过”链接似乎没有涉及到跳过缓存的能力? - Jacques

5
我已经实现了这样的解决方案,但是发现它不太方便。 也许NX有一个命令来清除它的缓存,但我没有找到它。 package.json
  "scripts": {
    "nx": "nx",
    "postnx": "node checkAndClearCache.js",
  ...

checkAndClearCache.js

const fs = require('fs');
const rimraf = require('rimraf');
const getSize = require('get-folder-size');

const cachePath = 'node_modules/.cache/nx';
const maxCacheMb = 2048;

if (fs.existsSync(cachePath)) {
  getSize(cachePath, (err, size) => {
    if (err) {
      throw err;
    }

    const MBSize = (size / 1024 / 1024).toFixed(2);

    console.log(`*** NX cache size is ${MBSize} Megabytes`);
    if (MBSize > maxCacheMb) {
      console.log('*** CLEAR NX CACHE ***');
      rimraf.sync(cachePath);
    }
  });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接