Node.js Recipes
3.11K subscribers
173 photos
7 videos
1 file
610 links
Download Telegram
Channel created
Когда можно считать, что вышла новая версия 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 стоит считать выходом новой версии.
Как правильно настроить TypeScript в Node.js проекте?
#typescript #best_practice

Как tsconfig.json появился в вашем проекте? Наиболее распространенные варианты:
1. Сделан фреймворком. В моем тех стэке, это npx @nestjs/cli new project-name
2. Результат команды ./node_modules/.bin/tsc --init
3. Копирование из другого проекта.

Каждый из этих вариантов, не учитывает под какой версией #nodejs вы будете запускать ваш проект. В результате этого, вы не можете использовать новые JavaScript конструкции.

TypeScript Wiki рекомендует такие настройки под Node.js v14:
{
"compilerOptions": {
"lib": ["ES2020"],
"module": "commonjs",
"target": "ES2020"
}
}

Для сравнения стандартная настройка Nest.js:

{
"compilerOptions": {
"module": "commonjs",
"target": "ES2017"
}
}

После изменения конфигурации у меня заработал Array.flat, ради которого я изучал этот вопрос. Полный список новых поддерживаемых фич ECMAScript можно посмотреть в исходниках typescript@src/lib.
Как исправить код в node_modules?
#package

Мир OpenSource не идеален. В используемых вами пакетах могут быть баги. Предположим, что вы нашли дебагером причину бага и она оказалась в node_modules. Вы можете открыть pull request, чтобы его исправить, но, что делать пока выйдет новая версия?

А если речь идет не о баг фиксе, а новой фиче, которая нужна только вам? Конечно, можно сделать fork и опубликовать свой пакет... Но хватит вступления!

Сегодня речь идет о замечательный пакет patch-package. Он решает задачу внести изменения в node_modules (что очевидно под .gitignore) и сохранить эти изменения в git.

Пример из документации:
# fix a bug in one of your dependencies
vim node_modules/some-package/brokenFile.js
# run patch-package to create a .patch file
npx patch-package some-package
# commit the patch file to share the fix with your team
git add patches/some-package+3.14.15.patch
git commit -m "fix brokenFile.js in some-package"

Изменения из сгенерированного patch файла будут применяться после каждого npm install за счет такой настройки:

"scripts": {
+ "postinstall": "patch-package"
}

С поставленной задачей пакет справляется на 5 из 5, имеет хорошую документацию. Кстати, там вы найдете когда все же стоит делать свой fork.
👍4🔥2