GitHub - Kikobeats/untracked: Universal way for ignoring unnecessary common files to fit your bundle

2 min read Original article ↗

untracked

Last version NPM Status

Universal way for ignoring unnecessary common files to create the smallest production bundle possible.

untracked generates ignore patterns for files you don't need in production: documentation, config files, source maps, type definitions, test files, and more: using gitignore pattern format, making it compatible with any tool that supports ignore files.

Install

Usage

The files to ignore will be detected automagically.

Write to a file

Redirect the output to any ignore file:

npx untracked > .dockerignore
npx untracked > .slugignore
npx untracked > .vercelignore

Update in place

If you already have an ignore file with custom rules, use --write to update only the auto-generated section (between ### start and ### finished markers) while preserving everything else:

npx untracked --write .dockerignore

Platform examples

Heroku: write as .slugignore during prebuild:

{
  "scripts": {
    "heroku-prebuild": "npx untracked > .slugignore"
  }
}

Vercel: write as .vercelignore:

npx untracked > .vercelignore

Docker: write as .dockerignore:

npx untracked > .dockerignore

Yarn: clean up node_modules via .yarnclean:

yarn install --production
npx untracked > .yarnclean
yarn autoclean --force

Configuration

Customize ignored files by declaring an untracked field in your package.json:

{
  "untracked": {
    "whitelist": ["bin"],
    "blacklist": ["node_modules/puppeteer/.local-chromium"]
  }
}
Field Description
whitelist Files to include in the bundle (won't be ignored)
blacklist Additional files to ignore
write Set to true (defaults to .dockerignore) or a file path to auto-update in place

You can also use any cosmiconfig supported format: .untrackedrc, .untrackedrc.json, .untrackedrc.js, or untracked.config.js.

How it works

untracked builds a comprehensive list of common files to ignore, covering:

  • Documentation: README, LICENSE, CHANGELOG, CONTRIBUTING, etc. (all markup formats)
  • Tooling: Makefile, Gruntfile, Gulpfile, karma.conf.js, jest.config.js, etc.
  • Assets: *.map, *.d.ts, *.flow, etc.
  • Artifacts: coverage/, docs/, examples/, test*, etc.

It then reads your dependencies from npm ls --prod and generates ignore rules that exclude everything unnecessary while preserving your production dependencies.

Related

License

untracked © Kiko Beats, released under the MIT License.
Authored and maintained by Kiko Beats with help from contributors.

kikobeats.com · GitHub @Kiko Beats · X @Kikobeats