{"id":18202485,"url":"https://github.com/doseofted/dotignorefile","last_synced_at":"2025-04-02T12:31:33.587Z","repository":{"id":211346438,"uuid":"728884738","full_name":"doseofted/dotignorefile","owner":"doseofted","description":"The ignore file not to be ignored","archived":false,"fork":false,"pushed_at":"2023-12-08T17:45:42.000Z","size":276,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T22:34:46.814Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/doseofted.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-07T22:57:18.000Z","updated_at":"2023-12-08T18:49:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"4e549623-50df-4e48-bdb8-67b755ffb27e","html_url":"https://github.com/doseofted/dotignorefile","commit_stats":{"total_commits":25,"total_committers":2,"mean_commits":12.5,"dds":"0.19999999999999996","last_synced_commit":"0dff0aa63aa815d1ca91fcee7d1d32e326418721"},"previous_names":["doseofted/ignorefile"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doseofted%2Fdotignorefile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doseofted%2Fdotignorefile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doseofted%2Fdotignorefile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doseofted%2Fdotignorefile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doseofted","download_url":"https://codeload.github.com/doseofted/dotignorefile/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246815604,"owners_count":20838470,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-03T10:04:12.254Z","updated_at":"2025-04-02T12:31:28.567Z","avatar_url":"https://github.com/doseofted.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `.ignorefile`\n\n\u003e **The ignore file not to be ignored** ([relevant thread](https://www.threads.net/@doseofted/post/C0kT-W2xpRp))\n\n![.ignorefile example](./.github/ignorefile.png)\n\n[![npm](https://img.shields.io/npm/v/dotignorefile)](https://www.npmjs.com/package/dotignorefile)\n[![npm license](https://img.shields.io/npm/l/dotignorefile)](https://spdx.org/licenses/MIT.html)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/dotignorefile/latest)](https://bundlephobia.com/package/dotignorefile@latest)\n\nThis is an attempt to [make a standard](https://xkcd.com/927/) for various ignore files in a single `.ignorefile` file. It is an INI-like file where contained in each section is the content of that specific ignore file.\n\nThis repository also serves as a tool to read the `.ignorefile` (as a step to be run with some postinstall or git hook) and generate the specific ignore files as utilized by applications, while also appending to or creating a `.gitignore` file that ignores the ignore files, so they're not uploaded to git.\n\nIt's created in TypeScript to iterate quickly but may be rewritten in a language like Go should this become useful.\n\n## What is `.ignorefile`?\n\nIt looks something like this:\n\n```ini\n[git]\n.env\n\n[prettier]\n.task/\n.turbo/\n\n[docker]\nnode_modules/\n\n[eslint]\ndist/\n```\n\nIt is formatted like an INI file, where each section is the name of the ignore file (without the \"ignore\" suffix) and the contents are the those of the specific ignore file (not the typical key/value pair given in an INI formatted file).\n\n## Additional Syntax Proposals\n\nThese are some ideas for additional syntax of the `.ignorefile` file.\n\n**Support subdirectories**: While files like `.gitignore` can be put in the root of the project, files like `.dockerignore` need to be placed in the root of the build context, resulting in more ignore files littered throughout a project. Consider a syntax like so:\n\n```ini\n[docker ./packages/website/]\nnode_modules/\ndist/\n```\n\nThis would generate a `.dockerignore` file in the `./packages/website/` directory with the contents of the section.\n\n## Get Started\n\nThe command for generating the file will be ran like so (**it's a WIP**, use `--help` for docs):\n\n```zsh\nnpx dotignorefile@latest\n```\n\nYou may also use this as a postinstall hook in your project. In your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"postinstall\": \"dotignorefile\"\n  },\n  \"dependencies\": {\n    \"dotignorefile\": \"latest\"\n  }\n}\n```\n\n## Development\n\n```zsh\n# Ensure you're on the right Node version\nnvm install\n# enable Corepack so pnpm gets installed automatically\ncorepack enable\n# Build project (or `pnpm dev` for watch mode)\npnpm build\n```\n\n## Release\n\n```zsh\npnpm changeset\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoseofted%2Fdotignorefile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoseofted%2Fdotignorefile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoseofted%2Fdotignorefile/lists"}