Variable: projectile-globally-ignored-directories

projectile-globally-ignored-directories is a customizable variable defined in projectile.el.

Value

(".idea" ".vscode" ".ccls-cache" ".cache" ".clangd" ".git" ".hg"
 ".fslckout" "_FOSSIL_" ".bzr" "_darcs" ".pijul" ".svn" ".sl" ".jj"
 ".osc" "node_modules" "target" "_build" ".gradle" ".stack-work"
 ".build" "elm-stuff" ".dart_tool" ".zig-cache" "zig-out"
 "__pycache__" "*.egg-info" ".venv" ".tox" ".mypy_cache"
 ".pytest_cache" ".ruff_cache" ".next" ".nuxt" ".svelte-kit" ".astro"
 ".turbo" ".parcel-cache" "_site" ".terraform" ".direnv")

Documentation

A list of directories globally ignored by projectile.

Entries are gitignore patterns, matched against paths relative to the project root and applied by every indexing method alike:

- a pattern without a slash matches a directory with that name at any
  depth, so "tmp" ignores both ./tmp and ./src/tmp
- a pattern containing a slash is anchored at the project root, so
  "/tmp" and "doc/frotz" only match there
- * is a wildcard within a path segment, ** spans segments, ?
  matches a single non-slash character and [...]/[!...] are
  character classes

Matching is case-sensitive. Note that a leading * is a plain wildcard - it used to be a marker meaning "at any depth", which is now the default for every slashless pattern.

Besides the editor and version control directories, the default value covers the dependency and build output directories of the common ecosystems - node_modules, target, __pycache__ and so on. Add an entry to projectile-globally-unignored-directories to get one of them back, or a ! line to a project's .projectile to get it back for that project only.

See also projectile-globally-ignored-file-regexps.

This variable was added, or its default value changed, in projectile version 3.3.0.

Source Code

;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
(defcustom projectile-globally-ignored-directories
  '(;; editors
    ".idea"
    ".vscode"
    ".ccls-cache"
    ".cache"
    ".clangd"
    ;; version control
    ".git"
    ".hg"
    ".fslckout"
    "_FOSSIL_"
    ".bzr"
    "_darcs"
    ".pijul"
    ".svn"
    ".sl"
    ".jj"
    ".osc"
    ;; dependencies and build output
    ;;
    ;; These are all directories a tool generates and a project doesn't
    ;; commit.  Under `alien' they're usually excluded by the VCS anyway;
    ;; the point of listing them is `native' and `hybrid' indexing, and
    ;; projects that aren't under version control at all.  Names that some
    ;; projects do commit - `vendor', `build', `dist', `public' - are
    ;; deliberately not here.
    "node_modules"
    "target"
    "_build"
    ".gradle"
    ".stack-work"
    ".build"
    "elm-stuff"
    ".dart_tool"
    ".zig-cache"
    "zig-out"
    "__pycache__"
    "*.egg-info"
    ".venv"
    ".tox"
    ".mypy_cache"
    ".pytest_cache"
    ".ruff_cache"
    ".next"
    ".nuxt"
    ".svelte-kit"
    ".astro"
    ".turbo"
    ".parcel-cache"
    "_site"
    ".terraform"
    ".direnv")
  "A list of directories globally ignored by projectile.

Entries are gitignore patterns, matched against paths relative to the
project root and applied by every indexing method alike:

- a pattern without a slash matches a directory with that name at any
  depth, so \"tmp\" ignores both ./tmp and ./src/tmp
- a pattern containing a slash is anchored at the project root, so
  \"/tmp\" and \"doc/frotz\" only match there
- `*' is a wildcard within a path segment, `**' spans segments, `?'
  matches a single non-slash character and `[...]'/`[!...]' are
  character classes

Matching is case-sensitive.  Note that a leading `*' is a plain
wildcard - it used to be a marker meaning \"at any depth\", which is
now the default for every slashless pattern.

Besides the editor and version control directories, the default value
covers the dependency and build output directories of the common
ecosystems - `node_modules', `target', `__pycache__' and so on.  Add
an entry to `projectile-globally-unignored-directories' to get one of
them back, or a `!' line to a project's `.projectile' to get it back
for that project only.

See also `projectile-globally-ignored-file-regexps'."
  :group 'projectile
  :type '(repeat string)
  :safe #'list-of-strings-p
  :package-version '(projectile . "3.3.0"))