Сергей Руденко из Airbnb написал статью про миграцию кодовой базы фррнтенда компании с JavaScript на TypeScript — "ts-migrate: A Tool for Migrating to TypeScript at Scale".
Для миграции они разработали инструмент ts-migrate, который помогает в массовой конвертации JavaScript файлов. Для автоматического поиска проблемных мест в коде и запуска необходимых трансформаций используются диагностики TypeScript language server. Трансформации представляют собой кодмоды, которые могут использовать jscodeshift, AST TypeScript или могут работать с исходным кодом как с обычным текстом. Есть трансформации для упрощения миграции на TypeScript React-компонентов, но без поддержки хуков.
Благодаря ts-migrate в Airbnb на TypeScript было переведено более 80% всей кодовой базы фронтенда (6 миллионов строк кода). Но так как утилита устанавливает
Рекомендую почитать статью, если планируете перевести код своего проекта на TypeScript.
#typescript #migration #tool
https://medium.com/airbnb-engineering/ts-migrate-a-tool-for-migrating-to-typescript-at-scale-cd23bfeb5cc
Для миграции они разработали инструмент ts-migrate, который помогает в массовой конвертации JavaScript файлов. Для автоматического поиска проблемных мест в коде и запуска необходимых трансформаций используются диагностики TypeScript language server. Трансформации представляют собой кодмоды, которые могут использовать jscodeshift, AST TypeScript или могут работать с исходным кодом как с обычным текстом. Есть трансформации для упрощения миграции на TypeScript React-компонентов, но без поддержки хуков.
Благодаря ts-migrate в Airbnb на TypeScript было переведено более 80% всей кодовой базы фронтенда (6 миллионов строк кода). Но так как утилита устанавливает
any в проблемных местах, у ребят осталось ещё много работы над добавлением полноценных типов.Рекомендую почитать статью, если планируете перевести код своего проекта на TypeScript.
#typescript #migration #tool
https://medium.com/airbnb-engineering/ts-migrate-a-tool-for-migrating-to-typescript-at-scale-cd23bfeb5cc
Medium
ts-migrate: A Tool for Migrating to TypeScript at Scale
Learn about how we used codemods to accelerate migration from JavaScript to TypeScript at Airbnb.
Зейнеп Канкара в блоге V8 написала статью про Indicium — новый инструмент рантайм анализа V8 — "Indicium: V8 runtime tracer tool".
Чтобы понять, зачем нужен этот инструмент, нужно немного разобраться в кишках V8. Для представления JavaScript-объектов V8 использует специальную структуру — Map (не тот Map, который определён в ECMAScript). Благодаря этой структуре движок экономит оперативную память при работе с большим числом однотипных объектов. Map в свою очередь использует оптимизацию Inline Cache (IC) для быстрого доступа к свойствам объектов.
Внутри V8 уже есть всё необходимое для получения информации о Map и IC, и уже есть готовые инструменты для их анализа. Indicium представляет эту информацию в удобном виде, связывая между собой Map и IC. С помощью него можно проанализировать создание объектов и быстро выявить проблемные места в исходном коде.
Indicium — это ещё один полезный инструмент для анализа проблем производительности в Chromium и Node.js.
#performance #tool #v8
https://v8.dev/blog/system-analyzer
Чтобы понять, зачем нужен этот инструмент, нужно немного разобраться в кишках V8. Для представления JavaScript-объектов V8 использует специальную структуру — Map (не тот Map, который определён в ECMAScript). Благодаря этой структуре движок экономит оперативную память при работе с большим числом однотипных объектов. Map в свою очередь использует оптимизацию Inline Cache (IC) для быстрого доступа к свойствам объектов.
Внутри V8 уже есть всё необходимое для получения информации о Map и IC, и уже есть готовые инструменты для их анализа. Indicium представляет эту информацию в удобном виде, связывая между собой Map и IC. С помощью него можно проанализировать создание объектов и быстро выявить проблемные места в исходном коде.
Indicium — это ещё один полезный инструмент для анализа проблем производительности в Chromium и Node.js.
#performance #tool #v8
https://v8.dev/blog/system-analyzer
v8.dev
Indicium: V8 runtime tracer tool · V8
Indicium: V8 system analyzer tool to analyze Map/IC events.
Сегодня узнал про утилиту для управления версиями инструментов JavaScript-тулчейна — Volta.
Если объяснять человеческим языком, то Volta похожа на nvm. С помощью неё можно устанавливать и переключаться между разными версиями Node.js. В отличие от nvm она написана на Rust и работает очень быстро. Инициализация nvm при открытии терминала может занимать несколько секунд (на моём стареньком маке около четырёх секунд). Volta исключает необходимость её инициализации при запуске терминала.
Но если бы дело было только в скорости, то было бы не очень интересно. Ещё Volta позволяет пинить версии node/npm/yarn в package.json и автоматически переключаться на нужную версию при переходе в директорию с таким конфигом. То есть можно запушить package.json с запиненными версиями node и npm в git, и всем членам команды, кто использует volta, не надо беспокоится о ручном переключении версии ноды. Ещё одна фишка — установка утилит из npm, которые не надо переустанавливать при переключении версии ноды.
Volta всё ещё находится в стадии активной разработки, поэтому есть кое-какие шероховатости. Например, есть проблемы с вызовом одной JS-утилиты из другой. Разработчики в issue пишут о том, что эта проблема уже в процессе решения. Над проектом работают разработчики из LinkedIn.
В общем, интересный проект. Поставил себе, пока радуюсь скорости открытия терминала.
#js #nodejs #tool
https://volta.sh/
Если объяснять человеческим языком, то Volta похожа на nvm. С помощью неё можно устанавливать и переключаться между разными версиями Node.js. В отличие от nvm она написана на Rust и работает очень быстро. Инициализация nvm при открытии терминала может занимать несколько секунд (на моём стареньком маке около четырёх секунд). Volta исключает необходимость её инициализации при запуске терминала.
Но если бы дело было только в скорости, то было бы не очень интересно. Ещё Volta позволяет пинить версии node/npm/yarn в package.json и автоматически переключаться на нужную версию при переходе в директорию с таким конфигом. То есть можно запушить package.json с запиненными версиями node и npm в git, и всем членам команды, кто использует volta, не надо беспокоится о ручном переключении версии ноды. Ещё одна фишка — установка утилит из npm, которые не надо переустанавливать при переключении версии ноды.
Volta всё ещё находится в стадии активной разработки, поэтому есть кое-какие шероховатости. Например, есть проблемы с вызовом одной JS-утилиты из другой. Разработчики в issue пишут о том, что эта проблема уже в процессе решения. Над проектом работают разработчики из LinkedIn.
В общем, интересный проект. Поставил себе, пока радуюсь скорости открытия терминала.
#js #nodejs #tool
https://volta.sh/
volta.sh
Volta - The Hassle-Free JavaScript Tool Manager
Volta: Start your engines.
Несколько дней назад вышла новая версия Snowpack. Фред Шотт — автор проекта — рассказал про все новинки релиза.
Snowpack — это инструмент для сборки фронтенд-приложений. В отличие от Webpack, Rollup и Parcel, приложения, использующие Snowpack, не нуждаются в пересборке бандла на каждое изменение файлов во время разработки. Snowpack транспилирует файлы точечно без бандлинга всех файлов, делегируя процесс создания графа зависимостей и его загрузки браузерам с помощью нативных JavaScript-модулей. То есть если вы пишете большое приложение и сделали изменения, например, в файле Header.tsx, то транспилироваться будет только он, тем самым уменьшая время обратной связи на каждое изменение файлов в разы по сравнению с другими бандлерами.
В Snowpack v3.0 были добавлены Streaming Imports. Благодаря им Snowpack может загружать и кэшировать npm-модули без явного использования
В общем, не релиз, а бомба. Рекомендую посмотреть в сторону Snowpack, если используете обычные сборщики и ждёте по несколько минут пересборки проекта при сохранении файлов.
#release #bundle #tool
https://www.snowpack.dev/posts/2021-01-13-snowpack-3-0
Snowpack — это инструмент для сборки фронтенд-приложений. В отличие от Webpack, Rollup и Parcel, приложения, использующие Snowpack, не нуждаются в пересборке бандла на каждое изменение файлов во время разработки. Snowpack транспилирует файлы точечно без бандлинга всех файлов, делегируя процесс создания графа зависимостей и его загрузки браузерам с помощью нативных JavaScript-модулей. То есть если вы пишете большое приложение и сделали изменения, например, в файле Header.tsx, то транспилироваться будет только он, тем самым уменьшая время обратной связи на каждое изменение файлов в разы по сравнению с другими бандлерами.
В Snowpack v3.0 были добавлены Streaming Imports. Благодаря им Snowpack может загружать и кэшировать npm-модули без явного использования
npm install. С этой версии Snowpack может создавать оптимизированные production-билды с помощью esbuild (очень быстрый сборщик, написанный на Go). Реализован новый API, который уже используется в SvelteKit. Сгенерированные с помощью Snowpack файлы теперь можно без проблем импортировать в Node.js.В общем, не релиз, а бомба. Рекомендую посмотреть в сторону Snowpack, если используете обычные сборщики и ждёте по несколько минут пересборки проекта при сохранении файлов.
#release #bundle #tool
https://www.snowpack.dev/posts/2021-01-13-snowpack-3-0
www.snowpack.dev
Snowpack v3.0
Snowpack v3.0 is here! Our biggest release yet with some serious new features, including pre-bundled streaming imports, built-in bundling & optimizations, new JavaScript APIs, and more.'
Дэниэл Дестефанис из Discord рассказал о том, как разработанные ими плагины для Figma упрощают жизнь разработчикам и дизайнерам — "Building open-source design tools to improve Discord’s design workflow".
Ребята из Discord сделали несколько плагинов для Figma, которые им помогают в работе. Плагин "Auto Theme" используется для автоматической генерации светлой/тёмной темы экранов приложения. Плагин "Design Lint" помогает быстро находить проблемные места в макете, когда в нём используются параметры, которых нет в дизайн-системе (цвет, радиус скругления углов и т.п.) Плагин "Table of Contents" генерирует список ссылок на основные части макета для помощи в навигации по документу. Плагин "Inspect" используется для упрощения разработки плагинов. Все плагины доступны на GitHub.
Интересная статья. Очень рекомендую заглянуть, если работаете с Figma.
#ux #tool
https://blog.discord.com/building-open-source-design-tools-to-improve-discords-design-workflow-9a25c29f9143
Ребята из Discord сделали несколько плагинов для Figma, которые им помогают в работе. Плагин "Auto Theme" используется для автоматической генерации светлой/тёмной темы экранов приложения. Плагин "Design Lint" помогает быстро находить проблемные места в макете, когда в нём используются параметры, которых нет в дизайн-системе (цвет, радиус скругления углов и т.п.) Плагин "Table of Contents" генерирует список ссылок на основные части макета для помощи в навигации по документу. Плагин "Inspect" используется для упрощения разработки плагинов. Все плагины доступны на GitHub.
Интересная статья. Очень рекомендую заглянуть, если работаете с Figma.
#ux #tool
https://blog.discord.com/building-open-source-design-tools-to-improve-discords-design-workflow-9a25c29f9143
Medium
Building open-source design tools to improve Discord’s design workflow
With the release of the Figma plugin API last year, the design team at discord saw an exciting opportunity.
Мод Нальпас во второй статье рассказала о том, как настроить HTTPS для локальной разработки — "How to use HTTPS for local development".
Для настройки локального HTTPS удобнее всего использовать утилиту mkcert. Mkcert — это zero-config утилита для настройки локального HTTPS. С помощью команды
Ещё можно использовать самоподписанный сертификат или сертификат подписанный внешним CA. Но эти варианты не очень гибки и удобны по сравнению с mkcert.
#http #tool
https://web.dev/how-to-use-local-https/
Для настройки локального HTTPS удобнее всего использовать утилиту mkcert. Mkcert — это zero-config утилита для настройки локального HTTPS. С помощью команды
mkcert -install создаётся локальный certificate authority (CA), с помощью команды mkcert <domain_name> создаётся сертификат, который нужно использовать при настройке локального HTTP-сервера.Ещё можно использовать самоподписанный сертификат или сертификат подписанный внешним CA. Но эти варианты не очень гибки и удобны по сравнению с mkcert.
#http #tool
https://web.dev/how-to-use-local-https/
web.dev
Use HTTPS for local development | Articles | web.dev
Несколько дней назад команда разработчиков Vue зерилизила Vite 2.0. В статье "Announcing Vite 2.0" Эван Ю рассказал о новом проекте.
Vite — это сборщик и dev server, использующий ESM, для ускорения применения изменений на этапе разработки. По своей философии он очень похож на Snowpack и WMR.
Vite создавался для улучшения разработки Vue-приложений, но команда разработчиков решила сделать его независимым от Vue (на данный момент есть поддержка Vue, React, Preact и LitElement). Из-за смены курса разработки первая версия так и не достигла стабильной версии, поэтому Vite 2.0 можно считать официальной первой стабильной версией.
Vite очень похож на Snowpack, но в нём есть несколько уникальных фич: поддержка автоматического код-сплиттинга для CSS, поддержка многостраничных приложений, есть режим для разработки браузерных библиотек, есть встроенная поддержка монорепозиториев и CSS-препроцессоров.
#tool #bundle
https://dev.to/yyx990803/announcing-vite-2-0-2f0a
Vite — это сборщик и dev server, использующий ESM, для ускорения применения изменений на этапе разработки. По своей философии он очень похож на Snowpack и WMR.
Vite создавался для улучшения разработки Vue-приложений, но команда разработчиков решила сделать его независимым от Vue (на данный момент есть поддержка Vue, React, Preact и LitElement). Из-за смены курса разработки первая версия так и не достигла стабильной версии, поэтому Vite 2.0 можно считать официальной первой стабильной версией.
Vite очень похож на Snowpack, но в нём есть несколько уникальных фич: поддержка автоматического код-сплиттинга для CSS, поддержка многостраничных приложений, есть режим для разработки браузерных библиотек, есть встроенная поддержка монорепозиториев и CSS-препроцессоров.
#tool #bundle
https://dev.to/yyx990803/announcing-vite-2-0-2f0a
DEV Community
Announcing Vite 2.0
Today I'm excited to announce the official release of Vite 2.0! Vite (French word for "fast", pron...
Хью Хауорт написал обзор современных инструментов сборки — "Comparing the New Generation of Build Tools".
В статье рассказывается про esbuild, Snowpack, Vite и wmr. Esbuild — это очень шустрый сборщик, написанный на Go. Snowpack, Vite и wmr — сборщики нового поколения. Они полагаются на нативную модульную систему JavaScript, устраняя шаг сборки приложения во время разработки.
Snowpack позволяет подключать и гибко настраивать разные сборщики для production-сборки проекта. Vite, наоборот, исповедует принцип zero-configuration, предоставляя набор настроек, которые подойдут большинству проектов. Wmr — самое лёгкое решение, но из коробки поддерживает только React и Preact. Esbuild в этом сравнении стоит особняком, так как это обычный, но очень быстрый сборщик.
Большая и хорошая статья. Очень рекомендую почитать.
#bundle #tool
https://css-tricks.com/comparing-the-new-generation-of-build-tools/
В статье рассказывается про esbuild, Snowpack, Vite и wmr. Esbuild — это очень шустрый сборщик, написанный на Go. Snowpack, Vite и wmr — сборщики нового поколения. Они полагаются на нативную модульную систему JavaScript, устраняя шаг сборки приложения во время разработки.
Snowpack позволяет подключать и гибко настраивать разные сборщики для production-сборки проекта. Vite, наоборот, исповедует принцип zero-configuration, предоставляя набор настроек, которые подойдут большинству проектов. Wmr — самое лёгкое решение, но из коробки поддерживает только React и Preact. Esbuild в этом сравнении стоит особняком, так как это обычный, но очень быстрый сборщик.
Большая и хорошая статья. Очень рекомендую почитать.
#bundle #tool
https://css-tricks.com/comparing-the-new-generation-of-build-tools/
CSS-Tricks
Comparing the New Generation of Build Tools | CSS-Tricks
A bunch of new developer tools have landed in the past year and they are biting at the heels of the tools that have dominated front-end development over the
Варун Вачнар пообщался с разработчиками из Adobe, BBC, Twilio, Shopify, Peloton и обобщил подходы, которые они используют при тестировании UI — "How to actually test UIs".
В статье рассказывается о подходах тестирования интерфейсов, создаваемых с помощью компонентного подхода. Для обособленного тестирования компонентов команды используют Storybook, для тестирования поведения компонентов — Testing Library, для тестирования доступности — Axe, для E2E-тестов — Playwright и Cypress.
Есть раздел про визуальное тестирование (тестирование скриншотами), но там нет упоминания инструментов с открытым исходным кодом, например, Hermione, Gemini, cypress-image-snapshot.
Как бы то ни было, статья хорошая. Очень рекомендую почитать.
#testing #tool
https://storybook.js.org/blog/how-to-actually-test-uis/
В статье рассказывается о подходах тестирования интерфейсов, создаваемых с помощью компонентного подхода. Для обособленного тестирования компонентов команды используют Storybook, для тестирования поведения компонентов — Testing Library, для тестирования доступности — Axe, для E2E-тестов — Playwright и Cypress.
Есть раздел про визуальное тестирование (тестирование скриншотами), но там нет упоминания инструментов с открытым исходным кодом, например, Hermione, Gemini, cypress-image-snapshot.
Как бы то ни было, статья хорошая. Очень рекомендую почитать.
#testing #tool
https://storybook.js.org/blog/how-to-actually-test-uis/
Неделю назад Себастьян Маккензи — автор Babel и Yarn — написал пост про то, что его проект Rome привлёк инвестиции.
Rome — это тулчейн с открытым исходным кодом, цель которого — консолидация разных инструментов для работы с JavaScript (пакетный менеджер, линтер, тест-раннер, сборщик и т.п.) В отличие от других инструментов Rome использует единое ядро для всех задач, ускоряя работу всего фронтенд-пайплайна.
Привлечённые инвестиции (4.5 миллиона долларов) пойдут на найм фулл-тайм разработчиков. Себастьян пишет о том, что не планирует закрывать какие-то части Rome, инструмент будет доступен без ограничений. Зарабатывать планируют на вспомогательных сервисах.
В общем, проект полетел. Очень интересно, как он повлияет на JavaScript-экосистему в будущем.
#announcement #tool
https://rome.tools/blog/announcing-rome-tools-inc/
Rome — это тулчейн с открытым исходным кодом, цель которого — консолидация разных инструментов для работы с JavaScript (пакетный менеджер, линтер, тест-раннер, сборщик и т.п.) В отличие от других инструментов Rome использует единое ядро для всех задач, ускоряя работу всего фронтенд-пайплайна.
Привлечённые инвестиции (4.5 миллиона долларов) пойдут на найм фулл-тайм разработчиков. Себастьян пишет о том, что не планирует закрывать какие-то части Rome, инструмент будет доступен без ограничений. Зарабатывать планируют на вспомогательных сервисах.
В общем, проект полетел. Очень интересно, как он повлияет на JavaScript-экосистему в будущем.
#announcement #tool
https://rome.tools/blog/announcing-rome-tools-inc/