{"id":26159970,"url":"https://github.com/bgotink/dot-config","last_synced_at":"2025-10-13T17:13:33.919Z","repository":{"id":270492117,"uuid":"910272534","full_name":"bgotink/dot-config","owner":"bgotink","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-10T20:07:22.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-05T23:08:45.550Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bgotink.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2024-12-30T21:11:41.000Z","updated_at":"2025-01-10T20:07:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"60160b64-9606-41b1-bfa8-33354320b830","html_url":"https://github.com/bgotink/dot-config","commit_stats":null,"previous_names":["bgotink/dot-config"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgotink%2Fdot-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgotink%2Fdot-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgotink%2Fdot-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgotink%2Fdot-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bgotink","download_url":"https://codeload.github.com/bgotink/dot-config/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243030778,"owners_count":20224665,"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":"2025-03-11T11:55:25.479Z","updated_at":"2025-10-13T17:13:28.873Z","avatar_url":"https://github.com/bgotink.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotconfig\n\nPlace workspace configuration in a `.config` folder\n\n## Rationale\n\nTools often require configuration files added to your repository root, and those files are often committed in the repository.\nThis leads to bloated repositories, where it's hard to find which files are _content_ and which are _config_.\n\nWe therefore propose to place configuration inside a `.config` folder in the repository root, similar to XDG's `~/.config` folder on Linux.\n\n## Extras\n\nMany tools only support [JSON](https://www.json.org/) or [YAML](https://yaml.org/), both of which are problematic in their own way.\nJSON is not designed to store configuration, lacking important features like comments and bringing a lot of papercuts like forbidding trailing commas.\nYAML solves the issues of JSON but brings a bunch of issues of its own, with its ambiguous syntax (hope you're not in [Norway](https://www.bram.us/2022/01/11/yaml-the-norway-problem/)), whitespace sensitivity (including lack of [tabs](https://blog.lslabs.dev/posts/tabs_vs_spaces)!), and more.\n\n[TOML](https://github.com/toml-lang/toml)\u0026emdash;another format supported by some tools\u0026emdash;is great for small files but quickly becomes unwieldy for larger files or when nesting.\n\nEnter [KDL](https://kdl.dev), a language specifically designed with configuration in mind.\nIt focuses on being easy to parse for computers while also being easy to read/write for humans.\n\nThis repository adds KDL support to tools that don't support any more human-friendly configuration language.\n\n## Usage\n\nReplace any of the supported packages with the `@dot-config` alias.\nYou can specify an exact version or a tag.\n\nFor example, in your `package.json` you can replace\n\n```json\n{\n\t\"devDependencies\": {\n\t\t\"prettier\": \"3.4.2\"\n\t}\n}\n```\n\nwith\n\n```json\n{\n\t\"devDependencies\": {\n\t\t\"prettier\": \"npm:@dot-config/prettier@3.4.2-dotconfig.0.1.0\"\n\t}\n}\n```\n\nto specify both the prettier version and the dot-config version exactly.\nAlternatively, you can use\n\n```json\n{\n\t\"devDependencies\": {\n\t\t\"prettier\": \"npm:@dot-config/prettier@upstream-3.4.2\"\n\t}\n}\n```\n\nto only define the version of prettier.\n\n### SemVer\n\nSemantic Versioning is great and all, but it cannot handle the scenario where there are two versions: the version of the tool and the version of the patches applied to the tool.\nThis project therefore uses \"pre-release\" versions that contain both version numbers: `\u003ctool version\u003e-dotconfig-\u003cdotconfig version\u003e`, e.g. `3.4.2-dotconfig-0.1.0`.\n\nAs an alternative the project could decouple its versions from the upstream versions, e.g. 3.4.3 of `@dot-config/prettier` could map to version 3.4.2 of `prettier`.\nThis can quickly become confusing for the humans managing the versions and problematic for other tools that read these versions.\nFor example, if the dot-config format should make a breaking change, it would have to be published as a new major version and it would cause all kinds of problems to have `@dot-config/prettier` version 4 map onto `prettier` version 3.x.\n\nTo make things easier, aliases are created so developers can only define the tool version if they want to.\nBecause of limitations in NPM we can't create an alias that could be construed as a version number, so we use `upstream-\u003ctool version\u003e` as alias.\n\nOnce this project reaches stability, it is not expected to make any further breaking changes and the `-dotconfig` part of the version numbers can be dropped.\n\n## License\n\nThis repository is free and unencumbered software released into the public domain.\nThe packages published via this repository retain their original licenses.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbgotink%2Fdot-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbgotink%2Fdot-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbgotink%2Fdot-config/lists"}