Получи случайную криптовалюту за регистрацию!

Фронтенд дайджест #130 Лучшее за неделю Подкаст [EN] Вышел | FrontoWeek: Недельный дайджест [Фронтовик]

Фронтенд дайджест #130
Лучшее за неделю
Подкаст

[EN] Вышел Webpack 5.
Ожидаемо, улучшили всё, что смогли улучшить: скорость сборки, tree shaking, размер бандла, убрали лишние полифилы, добавили сборку микрофронтендов.
На ней остановимся чуть подробнее: идея Module Federation в том, чтобы писать разные части приложения, как отдельные части, которые могут быть легко замененены при необходимости: например, выделить приветственный лендинг в отдельный проект, в котором можно подключать любые библиотеки и наводить любую красоту, без ущерба для размера бандла основного приложения.
Подробнее о Module Federation.

[EN] Immutable.JS — популярная библиотека по работе с иммутабельными структурами данных с 3 миллионами скачиваний в неделю. Правда четвёртая версия библиотеки находится в стадии релиз кандидата уже 2 года. Последний коммит был в январе 2020, и на гитхабе куча открытых ишью и пулл-реквестов. Автор библиотеки — Lee Byron — не против передать доступ на запись в репозиторий, но обсуждение затянулось так как он очень редко выходит на связь.

Что делать?
Можно продолжать пользоваться. У библиотеки нет выявленных уязвимостей. А если и обнаружатся, то всегда можно использовать форк сообщества или создать свой.

А можно найти альтернативу в зависимости от темы:
Для защиты данных от случайных изменений:
Используйте встроенные в язык: примитивы, Object.freeze() / Object.seal(), приватные поля и замыкания.

Иммутабельные структуры быстрее обрабатывать
Это справедливо только для узкого набора кейсов: операции вроде concat, push, append будут действительно быстрее, однако тот же map никак не сможет быть быстрее по иммутабельной структуре.

Обеспечить краткость, чистоту функций и отсутствие сайд-эффектов
Это можно сделать без сложных структур данных:
- Используя встроенные методы массивов: просто не меняйте входящие данные;
- Используя внешние функции для обработки массивов из библиотек Ramda или Sanctuary;
- Стримо-подобные обработчики, которые не создают промежуточных массивов, а прогоняют каждый элемент входного массива через конвейер заданных функций, как это делает тот же Lodash;
- Попробовать Immer — библиотеку, которая решает задачу иммутабельности другим образом, который хорошо подходит, например, для React + Redux стэка.

[EN] Вместе с Node.js 15.0.0 на следующей неделе выходит новая версия npm v7, которая содержит долгожданные фичи: 
- Workspaces, как в Lerna;
- Автоматическую установка peer-dependencies;
- Новый формат package-lock файла и поддержку yarn.lock, что обеспечивает детерминированно воспроизводимые сборки.

Новая версия была значительно отрефакторена внутри и содержит следующие обратно несовместимые изменения:
- peerDependencies устанавливаются автоматически;
- Пакеты самого npm используют package.exports поэтому импорт внутренних npm-модулей через require() теперь невозможен;
- npx полностью переписан и будет теперь использовать внутри новую команду npm exec, а как отдельная команда будет теперь deprecated;
- Изменен вывод команды npm audit (вместе с json форматом)
Подробнее обо всех изменениях.

Чтобы случайно ничего не сломать, новая версия npm пока не будет помечена как latest, но ее можно установить вместе с обновлением Node.js до 15 версии, либо явно указав версию npm.

[EN] В начале октября Gitlab, без предупреждения, закрыл доступ к своим сервисам для иранских айпи адресов.
А через несколько дней и вовсе заблокировал аккаунты иранских пользователей.
Гитлаб пояснил, что в связи переездом к новому провайдеру, они обязаны выполнять предписания правительства США о недопущении некоторых стран к их платформе.
На просьбы хотя бы временно открыть доступ, чтобы разработчики могли забрать свои приватные проекты, поддержка ответила, что это не в их силах; пользователи могут расчитывать только на локальные копии.
Напишите в чат, какую платформу для хранения кода вы выберете, когда GitHub, GitLab и Bitbucket забанят вашу страну.