How to clear Nx cache

Viewed 22751

I have an Nx monorepo (https://nx.dev). It has a folder with Nx cache (./node_modules/.cache/nx/). Its size for now is over 3GB.

Is there a command for clear this cache?

5 Answers

Just delete the whole 'nx' cache folder:

rm -rf ./node_modules/.cache/nx

This works in the latest version as of today (February 12, 2022). I am uncertain why this is no longer in the CLI documentation despite evidence of it being there in the past: https://nx.dev/cli/clear-cache

nx clear-cache

I have implemented such a solution, but do not find it convenient. Perhaps NX has a command to clear its cache, but I did not find it.

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);
    }
  });
}

There is not really any command to delete the Nx cache except to skip it. If size of the directory is your problem then may be running your node script as a cron job might be an option. In case, location of the directory is your concern then you also configure it and move it outside node_modules like this.

Related