[Разработка веб-сайтов] [HTML, CSS, JavaScript] Знакомство с Rome — компилятор, сборщик, линтер, тесты в одном флаконе
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Почти две недели назад вышла запись в блоге по поводу Rome.
Rome представляет собой целый набор инструментов — линтер, компилятор, сборщик, тест раннер и даже больше. Нацелен он на JS, TS, HTML, JSON, Markdown, CSS. Проект пытается унифицировать набор инструментов необходимых для фронт-енд разработки.
Rome монолитный и включает все традиционные инструменты фронт-енд экосистемы. Команда разработчиков называет это toolchain. Важным моментом является, то, что это не попытка объединить существующий набор инструментов, а разработать полностью новый набор инструментов. Все это должно быть в одном пакете и единой кодовой базой.
Rome разрабатывается как замена Babel, ESLint, Webpack, Prettier, Jest и прочих.
Посмотрим к чему это приведет, если честно меня устраивает некоторая конкуренция и «не монолитный» подход в инструментах разработки. Да, для новичка вход не очевиден, слишком большое изобилие инструментов, которые в большинстве своем взаимозаменяемы. Возможно в таком нюансе, Rome немного снизит порог входа.
Текущее состояние
Rome находится в бете и уже справляется с некоторыми своими обязанностями. Например у линтера уже поддерживается 100 правил, включая те, что часто используемые при использовании Typescript и React. Полный список правил можно найти тут
Опенсорс проектаначался с начала года и у проекта уже 70 контрибьютеров и более 600 комитов. В целом проект развивается и пока каких либо затуханий не видно.
Немного истории
В 2014 году был создан 6to5 (сейчас называется Babel). Это JavaScript транспайлер который копмпилировал новый код на ES6 в ES5. В тот момент проект не ставил каких либо целей, но с ростом популярности приходилось корректировать разработку.
6to5 переименовали в Babel и новой задачей было стать общей платформой для статических трансформаций JavaScript. Это означало систему плагинов и поддержку новых фичей будущих JavaScript стандартов и даже «proposals».
Команда разработчиков думала пойти еще дальше. Babel должен быть под капотом минифайеров, линтеров, форматтеров, подсветки синтаксиса, проверщиков типов, инструментов компиляции и так далее.
В 2016 году создатель Babel покинул проект. Со временем стало понятно, что подход с предоставлением широкого API (буквально всех внутренностей) слишком трудно поддерживать. Для поддержки вышеописанного инструментария, потребовалось бы переписать буквально все. Архитектура проекта связана с решениями которые автор делал еще в 2014 году, только изучая как работают парсеры AST и компиляторы. Изменения бы затронули большую часть API без возможности обратной совместимости.
Разработчики инструментов под JavaScript, тратят огромное количество времени на обработку исходного кода. Babel, ESlint, Webpack, частично занимаются одним и тем же.
Линтеры в экосистеме JavaScript равнозначны компиляторам. Оба принимают на вход исходный код, оба его обрабатывают и на выход выдают код и ошибки (если есть). Отличается лишь полученный код. В случае с линтером, это отформатированный исходный код с с исправлениями.
Чем сильней ваша инфрастуктура компиляции, тем сильней линтер. То же самое относится и к другим инструментам, которые так или иначе обрабатывают код. Мы можем создавать более мощные инструменты, используя общую базу, которую легко адаптировать.
Rome — духовный преемник Babel. Я усвоил уроки и поставил четкие цели. Вместо того, чтобы предоставлять слишком объемный публичный API для других инструментов, мы собираем их все в одном месте. Я очень рад попробовать что-то новое, чего раньше не видел JavaScript и веб-экосистема.
— Sebastian McKenzie
Использование
Rome можно установить используя Yarn или NPM:
yarn add rome
npm install rome
Создание проекта
Для того, что бы Rome смог найти ваши файлы, ему нужна конфигурация. Для автоматического создания проекта можно использовать:
rome init
Эта команда создаст директорию .config и поместит туда rome.rjson, с конфигурацией проекта.
Если у вас есть существующий проект, то можно сразу автоматически применить форматирование и исправления:
rome init --apply
RJSON это расширение JSON, которое добавляет некоторые фичи. Например комментарии в JSONе.
Запустить линтер можно с помощью
rome check
Линтинг
Rome разрабатывается с мыслью, предоставления максимального количества информации для исправления ошибок. У проекта есть своего рода кредо:
Богатый UI (результат в консоли): Хорошо отформатированная информация, подсветка синтаксиса, ссылки, списки и прочее.
Исправления: Rome может исправить большое количество ошибок (как линтер) и применить их автоматически. Если есть несколько путей решения, то инструмент предоставляет вам выбор.
Процесс ревью: CLI интерактивно богат и позволяет прямо в консоли принимать решения по исправлениям и пробегаться по всем ошибкам.
Редакторы: Rome интегрируется с редакторами, что позволяет делать форматирование на сохранения, подсветку ошибок и тд.
Сохранность: Rome кеширует оригинальные файлы перед тем как сделать изменения. Используя rome recover, можно откатить исправления.
Вместо заключения
Пока этот инструмент еще находится в активной разработке, но его уже как-то можно попробовать. Главное, что бы не получилось вот так:
Офф документация
===========
Источник:
habr.com
===========
Похожие новости:
- [Разработка веб-сайтов, PHP] Xdebug через Windows Subsystem For Linux 2 (WSL2)
- [Алгоритмы, Node.JS, API, Финансы в IT] Поиски фундаментальных данных для акций через API Financial Modeling Prep
- [IT-инфраструктура, Браузеры, Высокая производительность, Разработка веб-сайтов, Сетевые технологии] Почему CDN не нужны: развенчиваем старый миф
- [API, JavaScript, Финансы в IT] Отслеживаем состояние своего портфеля у брокера «Тинькофф Инвестиции» через Google Таблицы
- [Веб-дизайн, Разработка веб-сайтов] 8 ошибок начинающего PSD дизайнера. Как упростить работу верстальщика
- [Разработка веб-сайтов, IT-стандарты, IT-компании] 30 английских аббревиатур, которые должен знать каждый начинающий веб разработчик (перевод)
- [Высокая производительность, JavaScript, Алгоритмы] Нативный — не значит быстрый. Обгоняем map, filter и reduce на больших массивах
- [CMS, Разработка веб-сайтов] Как я строил финскую доску объявлений на движке Tamaranga DO
- [Разработка веб-сайтов, Python, Управление разработкой] Исправь код, продай техническую фигню, покрути рулетку на Russian Python Week 2020
- [Разработка веб-сайтов, PHP, Программирование, Проектирование и рефакторинг] Модернизация старого PHP-приложения (перевод)
Теги для поиска: #_razrabotka_vebsajtov (Разработка веб-сайтов), #_javascript, #_jest, #_webpack, #_razrabotka_vebsajtov (
Разработка веб-сайтов
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:53
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Почти две недели назад вышла запись в блоге по поводу Rome. Rome представляет собой целый набор инструментов — линтер, компилятор, сборщик, тест раннер и даже больше. Нацелен он на JS, TS, HTML, JSON, Markdown, CSS. Проект пытается унифицировать набор инструментов необходимых для фронт-енд разработки. Rome монолитный и включает все традиционные инструменты фронт-енд экосистемы. Команда разработчиков называет это toolchain. Важным моментом является, то, что это не попытка объединить существующий набор инструментов, а разработать полностью новый набор инструментов. Все это должно быть в одном пакете и единой кодовой базой. Rome разрабатывается как замена Babel, ESLint, Webpack, Prettier, Jest и прочих. Посмотрим к чему это приведет, если честно меня устраивает некоторая конкуренция и «не монолитный» подход в инструментах разработки. Да, для новичка вход не очевиден, слишком большое изобилие инструментов, которые в большинстве своем взаимозаменяемы. Возможно в таком нюансе, Rome немного снизит порог входа. Текущее состояние Rome находится в бете и уже справляется с некоторыми своими обязанностями. Например у линтера уже поддерживается 100 правил, включая те, что часто используемые при использовании Typescript и React. Полный список правил можно найти тут Опенсорс проектаначался с начала года и у проекта уже 70 контрибьютеров и более 600 комитов. В целом проект развивается и пока каких либо затуханий не видно. Немного истории В 2014 году был создан 6to5 (сейчас называется Babel). Это JavaScript транспайлер который копмпилировал новый код на ES6 в ES5. В тот момент проект не ставил каких либо целей, но с ростом популярности приходилось корректировать разработку. 6to5 переименовали в Babel и новой задачей было стать общей платформой для статических трансформаций JavaScript. Это означало систему плагинов и поддержку новых фичей будущих JavaScript стандартов и даже «proposals». Команда разработчиков думала пойти еще дальше. Babel должен быть под капотом минифайеров, линтеров, форматтеров, подсветки синтаксиса, проверщиков типов, инструментов компиляции и так далее. В 2016 году создатель Babel покинул проект. Со временем стало понятно, что подход с предоставлением широкого API (буквально всех внутренностей) слишком трудно поддерживать. Для поддержки вышеописанного инструментария, потребовалось бы переписать буквально все. Архитектура проекта связана с решениями которые автор делал еще в 2014 году, только изучая как работают парсеры AST и компиляторы. Изменения бы затронули большую часть API без возможности обратной совместимости. Разработчики инструментов под JavaScript, тратят огромное количество времени на обработку исходного кода. Babel, ESlint, Webpack, частично занимаются одним и тем же. Линтеры в экосистеме JavaScript равнозначны компиляторам. Оба принимают на вход исходный код, оба его обрабатывают и на выход выдают код и ошибки (если есть). Отличается лишь полученный код. В случае с линтером, это отформатированный исходный код с с исправлениями. Чем сильней ваша инфрастуктура компиляции, тем сильней линтер. То же самое относится и к другим инструментам, которые так или иначе обрабатывают код. Мы можем создавать более мощные инструменты, используя общую базу, которую легко адаптировать. Rome — духовный преемник Babel. Я усвоил уроки и поставил четкие цели. Вместо того, чтобы предоставлять слишком объемный публичный API для других инструментов, мы собираем их все в одном месте. Я очень рад попробовать что-то новое, чего раньше не видел JavaScript и веб-экосистема.
— Sebastian McKenzie Использование Rome можно установить используя Yarn или NPM: yarn add rome
npm install rome
Создание проекта Для того, что бы Rome смог найти ваши файлы, ему нужна конфигурация. Для автоматического создания проекта можно использовать: rome init
Эта команда создаст директорию .config и поместит туда rome.rjson, с конфигурацией проекта. Если у вас есть существующий проект, то можно сразу автоматически применить форматирование и исправления: rome init --apply
RJSON это расширение JSON, которое добавляет некоторые фичи. Например комментарии в JSONе.
Запустить линтер можно с помощью rome check
Линтинг Rome разрабатывается с мыслью, предоставления максимального количества информации для исправления ошибок. У проекта есть своего рода кредо: Богатый UI (результат в консоли): Хорошо отформатированная информация, подсветка синтаксиса, ссылки, списки и прочее. Исправления: Rome может исправить большое количество ошибок (как линтер) и применить их автоматически. Если есть несколько путей решения, то инструмент предоставляет вам выбор. Процесс ревью: CLI интерактивно богат и позволяет прямо в консоли принимать решения по исправлениям и пробегаться по всем ошибкам. Редакторы: Rome интегрируется с редакторами, что позволяет делать форматирование на сохранения, подсветку ошибок и тд. Сохранность: Rome кеширует оригинальные файлы перед тем как сделать изменения. Используя rome recover, можно откатить исправления. Вместо заключения Пока этот инструмент еще находится в активной разработке, но его уже как-то можно попробовать. Главное, что бы не получилось вот так: Офф документация =========== Источник: habr.com =========== Похожие новости:
Разработка веб-сайтов ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:53
Часовой пояс: UTC + 5