spotlight-exclude

Manage macOS Spotlight's indexing. Automatically blacklist all directories from indexing that match an expression, configure to run periodically.


License
ISC
Install
npm install spotlight-exclude@0.1.1

Documentation

spotlight-manager

Manage macOS Spotlight indexing behavior (without modifying your filesystem).

  • Automatically add certain directories to System Preferences > Spotlight > Privacy
  • This utility does not create .metadata_never_index files.

finally: humanity has achieved 0 fanspin idle

If your mac fan just spins up randomly at 100% sometimes, it's probably because of node_modules (or some other large folder with files you don't care about) that's being indexed.

Installation

$ npm install -g spotlight-manager

Usage

Prevent Spotlight from accessing any directory that matches (recursively) node_modules or any other dir you choose inside a given base directory.

sudo spotlight-manager exclude node_modules ~/Documents

NOTE: You will likely need to always run as superuser as R/W access to root owned System plists is necessary.

This has been an issue with Spotlight for years, but now, finally, we developers REFUSE to have our CPU cores stolen from us by the dreaded mds_stores, a beast capable of bringing even the fiercest hyperthreaded sexdecacore to its knees. We shall never wonder why, yet again, our innocent machines must be forced toil and labor for hours on end on nothing but a BARREN desktop! NAY! We shall fend off this ruthless torturer once and for all, using a NodeJS command line app to modify undocumented .plists deep within macOS. Hurrah!

I recommend setting up a cron job to run spotlight-manager job every week or so. (You will need to run as superuser, add the path of wherever spotlight-manager is installed to the sudoers file.) Then, use spotlight-manager add <DIRNAME> to maintain a list directory-matching rules in ~/.spotlight-manager which will be searched for and excluded all at once whenever your cron job runs.

$ spotlight-manager --help

SPOTLIGHT MANAGER:

spotlight-manager <SUBCOMMAND> [<subcommand_args...>] [flags]

SUBCOMMANDS:

    exclude         <DIRNAME_TO_EXCLUDE> <SEARCH_DIR (optional)> [--force]
                    Add all matching dirs to spotlight's exclusions.
        
        <DIRNAME_TO_EXCLUDE>    Name of directory you want to exclude.

        <SEARCH_DIR>            The directory in which to recursively search.
                                (optional): Will use cwd by default.

        --force                 Do not ask for confirmation, useful for 
                                calling from another script.

    unexclude       <DIRNAME_TO_UNEXCLUDE> <SEARCH_DIR (optional)> [--force]
                    Remove excluded dirs matching these rules from spotlight's 
                    exclusions. (renable indexing of this directory)
    job   
                    Search for any new exclusions that match saved 
                    exclusion rules and exclude all at once. (use for cron job)
                        <!> NOTE: job can only exclude new exclusions. <!> 
                    This prevents unrelated exclusions from being affected.

    add             <DIRNAME_TO_EXCLUDE> <SEARCH_DIR (optional)> [--force]
                    Add exclusion rule to be checked by job, and run job once.

    remove          <DIRNAME_TO_EXCLUDE> <SEARCH_DIR> [--force]
                    Remove exclusion rule checked by job, and run !! unexclude !!
                    NOT job because job does not remove exclusions.
                    <!> Assumes matching exclusions were all added by manager <!>

    list            [--showPaths] 
                    List all added exclude rules. (Only lists rules added via 
                    <add>. Rules added directly via <exclude> subcommand
                    are not tracked.)

        --showPaths             Print all added exclude rules and all 
                                actual paths the rule matches that are
                                excluded in the plist.

FLAGS:

    -h | --help     Print this page.