Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 2 months, 1 week ago
Ух, да, как довольно сильный астигматик я не переношу высокий контраст тёмных тем и почти всегда выбираю светлые — на них мои глаза болят меньше. Эстетически мне тоже нравятся тёмные, но они просто не совместимы для меня с долгой работой с текстом.
Продолжаю и буду продолжать настаивать, что тёмная тема не может автоматически рассматриваться как «лучше для глаз, лучше ночью». Если запилили только тёмную, то пилите и светлую, пожалуйста.
HTTP 301/302 vs 307/308
Разницу между этими кодами кажется знают все, кто однажды менял домен в большом популярном сервисе :) Живёте вы годами на одном домене, копите внешние ссылки, прорастают приложения и виджеты. А в один ~~прекрасный~~ день едете на другой домен и вам нужно сохранить всё богатство в рабочем состоянии.
И вот тут появляется вроде бы мелочь (совсем нет) — 307/308 сохраняют оригинальный метод запроса и его body(payload). Ну а 301/302 уходят на новый адрес через GET, теряя всё тело и разрушая все ваши апишки.
Typescript теперь и в Node.js?
В свежем выпуске мы затронули нашумевший PR. Что случилось то? А случилось такое, что в Node.js подвезли в экспериментальном режиме загрузчик для ts файлов. Работает он очень просто (правда просто). В ноду вшивается SWC в виде скомпиленного для WASM бинаря. TS файлы прогоняются через SWC и из них отстреливаются типы. Всё. Enum и namespace не работают (о счастье). Никакие ~~транспиляции~~ трансформации не производятся. Просто отстреливаются типы.
Есть ли проблемы? Конечно есть. Например, нужно писать расширение файлов в импортах. Потому что импорт так работает бай дизайн.
Почему это круто и важно? Потому что транспиляция раздражает. Потому что хочется всё иметь из коробки и без настроект. Накидать ts-файлик и запустить.
В общем, неожиданно и очень приятно.
UPD
Почитайте роадмап обязательно (спасибо @kravetsone, что напомнил)
Никита молодец, будь как Никита и его команда!
Очередной забавный кейс с npm
Есть у нас приложение, которое поднимает стенды с приложеньками, «ферма» называется. Вот просто, качает нужную ветку из git, делает условно npm ci && npm run build && npm run start
и поднимает инстанс, на который мы натравливаем E2E. Да-да, мы знаем про докер, но пока не успели.
И вот буквально позавчера ловим странный баг. В одной из веток не устанавливается несколько зависимостей. Просто нет их node_modules
. Локально не повторяется. Захожу на ферму, дёргаю npm ci
из консоли — всё ок. Зависимости не ставятся:
1) только когда npm ci
вызывается из самой фермы через child_process.exec
,
2) только на конкретной ветке.
Ооок. Я магию не люблю, потому сажусь разбираться. Посмотрим что там в env
. Ого, а там npm_config_legacy_peer_deps: 'true'
. П-нятненько почему зависимости не ставятся, они же peerDeps.
Две загадки:
1) Откуда legacy\-peer\-deps
залетает в env,
2) Почему он влияет не всегда.
Что ж, ответ на первую. В папке самой фермы в .npmrc
лежит legacy\-peer\-deps=true
. Когда мы её запускаем через npm run start
npm читает .npmrc
и прокидывает в env всю свою лабуду в npm_config_*
. А child_process.exec
запускает дочерние процессы с process.env
родителя.
Ответ на вторую загадку. npm ci \-\-legacy\-peer\-deps
не разрушал приложение, потому что ставил все зависимости как и было написано в package\-lock.json
. Но в конкретной ветке случилась коллизия, зависимость поставили и в devDependencies
и в просто dependencies
. Вот после этого npm ci
перестал доверять package\-lock.json
и пересчитал всё дерево, уже тихо применяя к нему правило \-\-legacy\-peer\-deps
.
Люблю я эту работу.
Скоро запускается открытый лекторий летних школ. Заглядывайте 10-го, кто хочет послушать как я буду 2 часа нудеть про Node.js. Другие лекции тоже интересные!
Техника тысячи маленьких пиаров — это когда ты параллельно с большими рабочими задачами постоянно находишь какие-то мелкие штуки и улучшаешь, улучшаешь, улучшаешь и свой проект и остальной опенсорс каждый день.
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 2 months, 1 week ago