Facebook разработал Rome, комплексное решение для разработки JavaScript и TypeScript. Проект (названный в честь высказывания, что «все дороги ведут в Рим») описывается как полная цепочка инструментов JavaScript, которая компилирует и объединяет проекты JavaScript, линты и проверки типов, запускает тесты, а также может форматировать код.
Разработка Rome была начата Себастьяном Маккензи, который также является создателем Babel and Yarn, и сейчас она разрабатывается командой React Native в Facebook. Они говорят, что Rome использует другой подход к инструментам JavaScript, чем существующие стеки с открытым исходным кодом, и, возможно, больше похож на внутренние инструменты на основе монорепозитория, используемые в очень крупных компаниях. Rome берет на себя все этапы сборки и компиляции, поэтому разработчикам не нужно передавать исходный код через несколько инструментов для разных этапов.
Rome состоит из компилятора, линтера, средства форматирования, сборщика и среды тестирования. Он написан на TypeScript, размещается самостоятельно и компилируется со старой версией. Его можно использовать для обработки кода JSX, Flow и TypeScript. Хотя в Риме есть несколько элементов, вы можете использовать его части с другими инструментами.
Вся компиляция в Rome происходит для каждого модуля, что позволяет обрабатывать каждый модуль в пуле рабочих потоков. Чтобы это не привело к необходимости повторного синтаксического анализа каждого модуля, они должны иметь предварительное пространство имен, чтобы все они могли совместно использовать одну область видимости. В то время как компиляция выполняется для каждого файла, Rome может объединять отдельные элементы, добавляя префикс ко всем переменным области модуля с идентификатором, сгенерированным на основе имени файла модуля. Это также применяется к каждому импортируемому и экспортированному идентификатору модуля, что означает, что любой экспорт модуля может быть адресован, используя только имя файла модуля и имя экспорта:
Rome все еще экспериментален и находится в активной разработке, и команда говорит, что он открыт для участников и тех, кто интересуется экспериментальными инструментами.
Один приятный штрих в проекте; разработчики говорят, что они знают, что выбранный ими логотип представляет собой древнегреческий спартанский шлем, что означает, что он не очень актуален, поскольку он не римский, но выглядит круче, чем римский эквивалент.