Когда можно считать, что вышла новая версия Node.js?
#docker #devops
У #Nodejs есть официальный график выхода и поддержки мажорных версий. Так 20 апреля ожидается первый релиз 16 версии Node.js.
Выход минорных и патч версий не имеет графика, а определяется Node.js Release Working Group.
Например, 6 апреля была опубликована версии 14.16.1. Спустя 24 часа Node.js Docker Working Group опубликовали эту версию на Docker Hub.
Еще раз, за выпуск binary и Docker image отвечают разные люди, поэтому задержка составляет сутки и более.
В современных проектах Node.js запускается как Docker контейнер, поэтому именно появление новой версии Docker Image стоит считать выходом новой версии.
#docker #devops
У #Nodejs есть официальный график выхода и поддержки мажорных версий. Так 20 апреля ожидается первый релиз 16 версии Node.js.
Выход минорных и патч версий не имеет графика, а определяется Node.js Release Working Group.
Например, 6 апреля была опубликована версии 14.16.1. Спустя 24 часа Node.js Docker Working Group опубликовали эту версию на Docker Hub.
Еще раз, за выпуск binary и Docker image отвечают разные люди, поэтому задержка составляет сутки и более.
В современных проектах Node.js запускается как Docker контейнер, поэтому именно появление новой версии Docker Image стоит считать выходом новой версии.
Как правильно настроить TypeScript в Node.js проекте?
#typenoscript #best_practice
Как
1. Сделан фреймворком. В моем тех стэке, это
2. Результат команды
3. Копирование из другого проекта.
Каждый из этих вариантов, не учитывает под какой версией #nodejs вы будете запускать ваш проект. В результате этого, вы не можете использовать новые JavaScript конструкции.
TypeScript Wiki рекомендует такие настройки под Node.js v14:
Для сравнения стандартная настройка Nest.js:
После изменения конфигурации у меня заработал
#typenoscript #best_practice
Как
tsconfig.json появился в вашем проекте? Наиболее распространенные варианты:1. Сделан фреймворком. В моем тех стэке, это
npx @nestjs/cli new project-name2. Результат команды
./node_modules/.bin/tsc --init3. Копирование из другого проекта.
Каждый из этих вариантов, не учитывает под какой версией #nodejs вы будете запускать ваш проект. В результате этого, вы не можете использовать новые JavaScript конструкции.
TypeScript Wiki рекомендует такие настройки под Node.js v14:
{ "compilerOptions": { "lib": ["ES2020"], "module": "commonjs", "target": "ES2020" }}Для сравнения стандартная настройка Nest.js:
{ "compilerOptions": { "module": "commonjs", "target": "ES2017" }}После изменения конфигурации у меня заработал
Array.flat, ради которого я изучал этот вопрос. Полный список новых поддерживаемых фич ECMAScript можно посмотреть в исходниках typenoscript@src/lib.Как исправить код в node_modules?
#package
Мир OpenSource не идеален. В используемых вами пакетах могут быть баги. Предположим, что вы нашли дебагером причину бага и она оказалась в node_modules. Вы можете открыть pull request, чтобы его исправить, но, что делать пока выйдет новая версия?
А если речь идет не о баг фиксе, а новой фиче, которая нужна только вам? Конечно, можно сделать fork и опубликовать свой пакет... Но хватит вступления!
Сегодня речь идет о замечательный пакет patch-package. Он решает задачу внести изменения в
Пример из документации:
Изменения из сгенерированного
С поставленной задачей пакет справляется на 5 из 5, имеет хорошую документацию. Кстати, там вы найдете когда все же стоит делать свой fork.
#package
Мир OpenSource не идеален. В используемых вами пакетах могут быть баги. Предположим, что вы нашли дебагером причину бага и она оказалась в node_modules. Вы можете открыть pull request, чтобы его исправить, но, что делать пока выйдет новая версия?
А если речь идет не о баг фиксе, а новой фиче, которая нужна только вам? Конечно, можно сделать fork и опубликовать свой пакет... Но хватит вступления!
Сегодня речь идет о замечательный пакет patch-package. Он решает задачу внести изменения в
node_modules (что очевидно под .gitignore) и сохранить эти изменения в git.Пример из документации:
# fix a bug in one of your dependenciesvim node_modules/some-package/brokenFile.js# run patch-package to create a .patch filenpx patch-package some-package# commit the patch file to share the fix with your teamgit add patches/some-package+3.14.15.patchgit commit -m "fix brokenFile.js in some-package"Изменения из сгенерированного
patch файла будут применяться после каждого npm install за счет такой настройки: "noscripts": {+ "postinstall": "patch-package" }С поставленной задачей пакет справляется на 5 из 5, имеет хорошую документацию. Кстати, там вы найдете когда все же стоит делать свой fork.
👍4🔥2
OpenJS World 2021
#conference #freebies
На выходных на этом канале будут посты про конференции и доклады, заслуживающие внимания. Открывает эту рубрику конференция OpenJS World. Она примечательна тем, что именно на ней был бы самый крутой нетворкинг, будь она оффлайн.
Дело в том, что организатором конференции является OpenJS Foundation, которая входит в Linux Foundation. Она появилась в результате слияния #NodeJS Foundation и JavaScript Foundation. Ее задачей является развитие OpenSource проектов, значимых длякомьюнити компаний платящих членские взносы. Среди этих проектов Webpack, Node.js, jQuery, Electron и пр.
В оффлайн годы конференция призвана собрать контрибьюторов проектов и представителей компаний. Представляете какая собирается тусовка?!
К сожалению, в этом году как и в прошлом она будет только онлайн. Естественно все доклады будут только на английском. Программы на сайте пока нет, есть только keynote докладчики. Учитывая опыт прошлого года, программа будет разнообразной.
Почему стоит пойти на OpenJS World 2021:
1. Онлайн.
2. Бесплатная регистрация.
3. Дата проведения 2 июня 2021, среда. Можно потратить рабочий день, а не выходной.
4. Будут плюшки от партнеров
В завершение, плейлист с прошлого года. Разбирать его весь, я не вижу смысла, но сделаю обзор на пару докладов.
#conference #freebies
На выходных на этом канале будут посты про конференции и доклады, заслуживающие внимания. Открывает эту рубрику конференция OpenJS World. Она примечательна тем, что именно на ней был бы самый крутой нетворкинг, будь она оффлайн.
Дело в том, что организатором конференции является OpenJS Foundation, которая входит в Linux Foundation. Она появилась в результате слияния #NodeJS Foundation и JavaScript Foundation. Ее задачей является развитие OpenSource проектов, значимых для
В оффлайн годы конференция призвана собрать контрибьюторов проектов и представителей компаний. Представляете какая собирается тусовка?!
К сожалению, в этом году как и в прошлом она будет только онлайн. Естественно все доклады будут только на английском. Программы на сайте пока нет, есть только keynote докладчики. Учитывая опыт прошлого года, программа будет разнообразной.
Почему стоит пойти на OpenJS World 2021:
1. Онлайн.
2. Бесплатная регистрация.
3. Дата проведения 2 июня 2021, среда. Можно потратить рабочий день, а не выходной.
4. Будут плюшки от партнеров
В завершение, плейлист с прошлого года. Разбирать его весь, я не вижу смысла, но сделаю обзор на пару докладов.
The Benefits of a “CLI First” Development Strategy - Corey Butler
#worth_seeing
Докладов в плейлист OpenJS World 2020 много, но для #Nodejs разработчиков я бы рекомендовал начать с The Benefits of a “CLI First” Development Strategy.
📕 Slides
💻 Source on GitHub
Почему стоит посмотреть это видео:
1. Наглядно проиллюстрировано написание кода на разных стадиях Software Development Life Cycle.
2. Любой #Nodejs разработчик должен уметь написать CLI инструмент.
3. Интересная идея CLI где угодно, в том числе браузере.
4. Только 20 минут. Последние 10 минут видео, почему-то не обрезали.
Заметки:
1. Под запуском CLI в браузере автор понимает не запуске терминала в браузере аля Cloud Shell, а запуск CLI в Developer Tools во вкладке созданной с помощью Chrome Extension.
2. Странно, что в докладе нет ни слова об ChatOps.
3. Для каких-то веб-приложений строка поиска может выполнять CLI функцию. Например, AWS, GCP.
4. Рассмотренная библиотека использует императивный стиль написания. Лично мне ближе декларативный например clipanion или что-то с декораторами вроде nestjs-command.
#worth_seeing
Докладов в плейлист OpenJS World 2020 много, но для #Nodejs разработчиков я бы рекомендовал начать с The Benefits of a “CLI First” Development Strategy.
📕 Slides
💻 Source on GitHub
Почему стоит посмотреть это видео:
1. Наглядно проиллюстрировано написание кода на разных стадиях Software Development Life Cycle.
2. Любой #Nodejs разработчик должен уметь написать CLI инструмент.
3. Интересная идея CLI где угодно, в том числе браузере.
4. Только 20 минут. Последние 10 минут видео, почему-то не обрезали.
Заметки:
1. Под запуском CLI в браузере автор понимает не запуске терминала в браузере аля Cloud Shell, а запуск CLI в Developer Tools во вкладке созданной с помощью Chrome Extension.
2. Странно, что в докладе нет ни слова об ChatOps.
3. Для каких-то веб-приложений строка поиска может выполнять CLI функцию. Например, AWS, GCP.
4. Рассмотренная библиотека использует императивный стиль написания. Лично мне ближе декларативный например clipanion или что-то с декораторами вроде nestjs-command.
YouTube
The Benefits of a “CLI First” Development Strategy - Corey Butler, Ecor Ventures
Holy WebSocket Revival: Serverless Sockets for Real Time Communication, Paul Chin
#worth_seeing #aws
Еще один доклад с OpenJS World 2020. На этот раз в формате Lightning.
Почему стоит посмотреть это видео:
1. Сам по себе формат Lightning, т.е 5-10 минутное выступление, является одним из самых сложных.
2. Мало кто знает, что можно сделать WebSocket-ы на serverless.
🔥 Демо, откройте два окна, чтобы посмотреть.
💻 Source on GitHub
Напомню, что бесплатная регистрация на OpenJS World 2021 уже открыта.
#worth_seeing #aws
Еще один доклад с OpenJS World 2020. На этот раз в формате Lightning.
Почему стоит посмотреть это видео:
1. Сам по себе формат Lightning, т.е 5-10 минутное выступление, является одним из самых сложных.
2. Мало кто знает, что можно сделать WebSocket-ы на serverless.
🔥 Демо, откройте два окна, чтобы посмотреть.
💻 Source on GitHub
Напомню, что бесплатная регистрация на OpenJS World 2021 уже открыта.
YouTube
Lightning Talk: Holy WebSocket Revival: Serverless Sockets for Real Time Communication, Paul Chin
👍1
Как протестировать webhook локально?
#package #service
Типичная задача #Nodejs разработчика это создание интеграций посредством webhook-ов. Типичный пример – оповещение об успешной оплате. Webhook это endpoint для оповещения вашего приложения о событии в сторонней системе, с которой вы интегрируетесь.
Webhook должен быть доступен в интернете.
Сервис ngrok.com позволяет сделать ваше локальное окружение доступным в интернете. При запуске он пробрасывает тунель между облаком и указанным портом на вашем компьютере. Вы получаете временный субдомен на ngrok.io, по которому будет доступно ваше локальное приложение. Фронтенд разработчик может таким образом провести демо с локального компьютера. Установка ngrok возможно и как CLI утилита (
Кроме поднятия туннеля ngrok предоставляет на 4040 порту Web Inspection Interface. В нем доступны все запросы и ответы, прошедшие тунель. Вместо повторной отправки запросов из интегрируемой системы используйте кнопку Replay. Это многократно ускоряет отладку.
#package #service
Типичная задача #Nodejs разработчика это создание интеграций посредством webhook-ов. Типичный пример – оповещение об успешной оплате. Webhook это endpoint для оповещения вашего приложения о событии в сторонней системе, с которой вы интегрируетесь.
Webhook должен быть доступен в интернете.
Сервис ngrok.com позволяет сделать ваше локальное окружение доступным в интернете. При запуске он пробрасывает тунель между облаком и указанным портом на вашем компьютере. Вы получаете временный субдомен на ngrok.io, по которому будет доступно ваше локальное приложение. Фронтенд разработчик может таким образом провести демо с локального компьютера. Установка ngrok возможно и как CLI утилита (
brew install ngrok для мак), и как npm пакет (npm install ngrok).Кроме поднятия туннеля ngrok предоставляет на 4040 порту Web Inspection Interface. В нем доступны все запросы и ответы, прошедшие тунель. Вместо повторной отправки запросов из интегрируемой системы используйте кнопку Replay. Это многократно ускоряет отладку.
👍1
Как изменить timezone (часовой пояс) в Node.js?
#nodejs_api #best_practise
Timezone или часовой пояс является частой проблемой при отладке бизнес логики завязанной на времени и датах. #Nodejs использует системные настройки времени при выполнение кода. Для этого используется переменная окружения TZ.
Хорошей практикой является явное указание в каком часовом поясе должен работать ваш код. На уровне кода, это делается вот так:
Эта строчка должна идти в стартовом файле.
Под Windows данный код не сработает. Это известная проблема Единственное решение – менять системные установки. Это можно автоматизировать пакетом set-tz, но обратная смена требует ручных действий.
Update: Node.js v16 поддерживает измениние таймзоны через
#nodejs_api #best_practise
Timezone или часовой пояс является частой проблемой при отладке бизнес логики завязанной на времени и датах. #Nodejs использует системные настройки времени при выполнение кода. Для этого используется переменная окружения TZ.
Хорошей практикой является явное указание в каком часовом поясе должен работать ваш код. На уровне кода, это делается вот так:
process.env.TZ = 'UTC'Эта строчка должна идти в стартовом файле.
Под Windows данный код не сработает. Это известная проблема Единственное решение – менять системные установки. Это можно автоматизировать пакетом set-tz, но обратная смена требует ручных действий.
Update: Node.js v16 поддерживает измениние таймзоны через
process.env.TZ и под windowsFwdays экспериментируют с форматами. Они выложили #nodejs дискуссию с осеннего JavaScript fwdays'20 в формате подкаста.
Forwarded from Fwdays
😯 Ситуація: по дорозі на роботу / в метро / в машині / поки готуєте вечерю ви ловите себе на думці, що хотіли б послухати цікаву дискусію і провести час з максимальною користю. Бажання знайти щось цікаве розриває вас зсередини.
Знайомо? Тоді радо пропонуємо вам прослухати наш ПЕРШИЙ подкаст😱
📍 Тема: #1 Discussion on technologies: Node.js
📍 Учасники дискусії:
- Олена Шаровар (Waverley Software)
- Ілля Климов (JavaScript.Ninja)
- Тимур Шемсединов (Metarhia, Kiev Polytechnic Institute)
- Андрій Шумада (WalkMe / Ciklum)
- Нікіта Галкін (Independent Contractor)
Обирайте платформу, на якій вам зручно прослухати подкаст, і переходьте за посиланням 🔻
SoundCloud 👉 bit.ly/3dSXU0Z
Apple Podcasts 👉 apple.co/3deP3HX
Google Podcasts 👉 bit.ly/3fZHt5C
Знайомо? Тоді радо пропонуємо вам прослухати наш ПЕРШИЙ подкаст😱
📍 Тема: #1 Discussion on technologies: Node.js
📍 Учасники дискусії:
- Олена Шаровар (Waverley Software)
- Ілля Климов (JavaScript.Ninja)
- Тимур Шемсединов (Metarhia, Kiev Polytechnic Institute)
- Андрій Шумада (WalkMe / Ciklum)
- Нікіта Галкін (Independent Contractor)
Обирайте платформу, на якій вам зручно прослухати подкаст, і переходьте за посиланням 🔻
SoundCloud 👉 bit.ly/3dSXU0Z
Apple Podcasts 👉 apple.co/3deP3HX
Google Podcasts 👉 bit.ly/3fZHt5C