idea-exclude
TypeScript icon, indicating that this package has built-in type declarations

1.2.1 • Public • Published

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

# set __tests__ as test roots
idea-exclude tests --test-root "**/__tests__"
# set src as source roots
idea-exclude tests --source-root "!(build|node_modules)/**/src"

This project excludes own dist folder, having .idea configuration a few levels above. To enable discoverability of configuration "above" - set the corresponding flag

idea-exclude build dist --lookabove

IDEA platform documentation related to controlled features can be found at

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 all node_modules as one group, and remove all other 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`);

Controlling 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

Package Sidebar

Install

npm i idea-exclude

Weekly Downloads

12

Version

1.2.1

License

MIT

Unpacked Size

55.5 kB

Total Files

28

Last publish

Collaborators

  • kashey