Rome is a linter, compiler, bundler, and more for JavaScript, TypeScript, HTML, Markdown, and CSS. Read more about our language support here.
Rome unifies functionality that has previously been completely separate tools. Most frontend tooling have a significant overlap in responsibilities and implementation. There is value in these being a single tool. Building upon a shared base allows us to provide a cohesive experience for processing code, displaying errors, parallelizing work, caching, and configuration.
Rome has been built from scratch and contains no third-party library dependencies.
Rome has strong conventions and aims to have minimal configuration. Read more about our project philosophy here.
Rome is maintained by a team of volunteers. Rome was started by Sebastian McKenzie, the author of Babel and Yarn.
Rome is MIT licensed, and the project managed under the Contributor Covenant Code of Conduct.
Rome derives its name from proverbs such as "All Roads Lead to Rome", "Rome wasn't built in a day" and "When in Rome, do as the Romans do". This refers to the expansive scope and the desire for conformity across the project. It started as a joke at the office.
Rome has a logo of a Roman arch, one of the most influential patterns in architecture. It symbolizes a strong foundation, allowing you to build large projects without having to ponder the underlying architecture, and reinventing the wheel.
Rome is written completely in TypeScript with sparing usage of loose types.
Rome runs on Node.js.
Rome is a monorepo with internal packages to delineate code boundaries.
Rome is self-hosted and compiles itself with an old version.
Rome supports processing JSX and TypeScript annotated code.
See CONTRIBUTING for more information.
The current area of focus is linting. See the umbrella task #20 for tracking.
To setup Rome in a project, all you need is a rome.json
file.
$ mkdir hello-world
$ cd hello-world
$ rome init
This file is used to configure Rome and indicates the boundaries of your project.
See Getting Started for more usage instructions.
Project philosophy can be found on our website.
Contribution and development instructions can be found in CONTRIBUTING.
Additional project coordination and realtime discussion happens on our Discord server. Remember that all activity on the Discord is still moderated and will be strictly enforced under the project's Code of Conduct.