{"id":13726244,"url":"https://github.com/ocaml-ppx/ocamlformat","last_synced_at":"2025-04-13T21:29:06.268Z","repository":{"id":25689085,"uuid":"106263946","full_name":"ocaml-ppx/ocamlformat","owner":"ocaml-ppx","description":"Auto-formatter for OCaml code","archived":false,"fork":false,"pushed_at":"2025-04-02T12:58:30.000Z","size":17605,"stargazers_count":658,"open_issues_count":116,"forks_count":186,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-04-06T18:12:20.934Z","etag":null,"topics":["ocaml"],"latest_commit_sha":null,"homepage":"","language":"OCaml","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/ocaml-ppx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-09T09:34:08.000Z","updated_at":"2025-04-06T01:00:41.000Z","dependencies_parsed_at":"2023-09-26T06:35:43.901Z","dependency_job_id":"102e3017-f256-44a4-a643-7900ac3d360f","html_url":"https://github.com/ocaml-ppx/ocamlformat","commit_stats":{"total_commits":1821,"total_committers":68,"mean_commits":"26.779411764705884","dds":0.5650741350906096,"last_synced_commit":"4c94d48771d893935a7cdaa0cd17557571082de0"},"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocaml-ppx%2Focamlformat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocaml-ppx%2Focamlformat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocaml-ppx%2Focamlformat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocaml-ppx%2Focamlformat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ocaml-ppx","download_url":"https://codeload.github.com/ocaml-ppx/ocamlformat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248784845,"owners_count":21161187,"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":["ocaml"],"created_at":"2024-08-03T01:02:56.715Z","updated_at":"2025-04-13T21:29:06.230Z","avatar_url":"https://github.com/ocaml-ppx.png","language":"OCaml","funding_links":[],"categories":["Tools","OCaml","Developer Tools","\u003ca name=\"OCaml\"\u003e\u003c/a\u003eOCaml"],"sub_categories":["Graphics and Visualization"],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003ca href=\"https://ocaml.org/p/ocamlformat/latest\"\u003e\n    ocamlformat\n  \u003c/a\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eOCaml Code Formatter.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://ocaml.ci.dev/github/ocaml-ppx/ocamlformat\"\u003e\n    \u003cimg src=\"https://img.shields.io/endpoint?url=https://ocaml.ci.dev/badge/ocaml-ppx/ocamlformat/main\u0026logo=ocaml\" alt=\"OCaml-CI Build Status\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n**ocamlformat** is a code formatter for OCaml. It comes with opinionated default settings but is also fully customizable to suit your coding style.\n\n- **Profiles:** ocamlformat offers profiles we predefined formatting configurations. Profiles include `default`, `ocamlformat`, `janestreet`.\n- **Configurable:** Users can change the formatting profile and configure every option in their `.ocamlformat` configuration file.\n- **Format Comments:** ocamlformat can format comments, docstrings, and even code blocks in your comments.\n- **RPC:** ocamlformat provides an RPC server that can bed used by other tools to easily format OCaml Code.\n\nocamlformat is part of the [OCaml Platform](https://ocaml.org/docs/platform), the recommended set of tools for OCaml.\n\n## Getting Started\n\n### Installation\n\nTo use ocamlformat, you will need [OCaml](https://ocaml.org/) and [opam](https://opam.ocaml.org/) (the OCaml package manager) installed on your system. Visit the [OCaml.org installation page](https://ocaml.org/install) for instructions.\n\nWith OCaml and opam installed, you can install ocamlformat with:\n\n```\nopam install ocamlformat\n```\n\n### Usage\n\nFormatting your code is as easy as running:\n\n```\nocamlformat file.ml\n```\n\nTo configure ocamlformat to your liking, create an `.ocamlformat` configuration file in your project with settings like:\n\n```\nprofile = default\nversion = 0.27.0\n```\n\nRefer to our [documentation](https://ocaml.org/p/ocamlformat/latest/doc/index.html) or use `ocamlformat --help` for a full list of configuration options.\n\nTo make formatting your code even easier, use the `dune` build system:\n\n```\ndune fmt\n```\n\n## Documentation\n\nThe full documentation for ocamlformat, including comprehensive user and API guides, can be found on [OCaml.org](https://ocaml.org/p/ocamlformat/latest/doc/index.html).\n\n## Contributing\n\n### [Contributing Guide](CONTRIBUTING.md)\n\nWe wholeheartedly welcome contributors! To start, please read our [Contributing Guide](CONTRIBUTING.md) to familiarize yourself with our development process, including how to propose and how to start hacking on ocamlformat.\n\n### [Hacking Guide](HACKING.md)\n\nIn addition to the Contributing Guide, we provide a [Hacking Guide](HACKING.md) for ocamlformat developers. It contains in-depth explanation of development processes, such as running tests, releasing ocamlformat, etc.\n\n### [Code of Conduct][coc]\n\nIn order to foster a welcoming and respectful community, ocamlformat has adopted the [OCaml Code of Conduct](coc).\n\n[coc]: https://ocaml.org/policies/code-of-conduct\n\n### [Roadmap](ROADMAP.md)\n\nInterested in the future of ocamlformat? Take a look at our [Roadmap](ROADMAP.md) to understand our vision and planned advancements for ocamlformat.\n\n### [Discussions][discussions]\n\nFor conversations on ongoing development, be sure to visit the [ocamlformat][discussions] section of the OCaml Discuss forum.\n\n[discussions]: https://discuss.ocaml.org/tag/ocamlformat\n\n## License\n\nocamlformat is distributed under the terms of the MIT License. See the [LICENSE](LICENSE) file for complete details.\n\n## Acknowledgments\n\nWe gratefully acknowledge the individuals and organizations that have significantly contributed to ocamlformat.\n\nocamlformat owes its existance to its initial author, [Josh Berdine](https://github.com/jberdine). We also want to express our appreciation to [Hugo Heuzard](https://github.com/hhugo), [Guillaume Petiot](https://github.com/gpetiot), and [Jules Aguillon](https://github.com/Julow). Their significant contributions have been instrumental to the advancement of ocamlformat.\n\nMoreover, our gratitude extends to Facebook, who fostered the inception of ocamlformat as part of their work on the [ReasonML](https://reasonml.github.io/) project. [Jane Street](https://www.janestreet.com/) and [Tarides](https://tarides.com/) have also provided financial support and contributed to the ongoing development of the project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Focaml-ppx%2Focamlformat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Focaml-ppx%2Focamlformat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Focaml-ppx%2Focamlformat/lists"}