README
idea-exclude
Some your .ideas better be excluded, especially in monorepos
It just updates your IDEA settings. Work with a whole JetBrains product family
🤷♂️ why? Cause WebStorm just hangs on a medium size monorepo and you need help it a little
yarn add idea-exclude
# usage
idea-exclude group glob
# exclude all node_modules in the "packages"
idea-exclude node_modules "packages/**/node_modules"
# exclude all node_modules but not in some root directories
idea-exclude node_modules "!(build|node_modules)/**/node_modules"
# can accept a list of files to exclude
idea-exclude custom-files this and this
This project removes own dist folder, having .idea configuration a few levels above
idea-exclude build dist --lookabove
API
Exclusion API requires 3 arguments:
project root
, where your settings (.idea/project.iml
) can be found- a
group name
- custom (even empty) string to "scope" changes - you can remove allnode_modules
as one group, and remove allother products
you are not interested in as another. list of files
as an array of strings or a glob.
import {exclude, excludeByGlob} from 'idea-exclude';
// excludes
excludeByGlob(process.cwd(), 'all my node_modules', '**/node_modules');
exclude(process.cwd(), 'named-group', ['list', 'of', 'files'])
Example with bolt
const workspaces = await bolt.getWorkspaces();
// as a list of files
exclude(process.cwd(), "monorepo", workspaces.map(({ dir }) => `${dir}/node_modules`));
// or as a glob
excludeByGlob(process.cwd(), "monorepo", `{${workspaces.map(({ dir }) => dir).join(",")}}/node_modules`);
Controling verbosity level
idea-exclude
uses diary for logging and in order to increase verbosity on the output one has to provide ENV variable
DEBUG="idea-exclude:*" idea-exclude node_modules "packages/**/node_modules"
In order to increase verbosity while using API use dedicated debug
command
import {debug as enabledIdeaExcludeDebug} from 'idea-exclude';
enabledIdeaExcludeDebug();
Prior art
The original version created by Aleksandr "Sasha" Motsjonov.
Licence
MIT