WTF is corepack?

Володимир Рожков

Я регулярно оновлюю всі залежності всіх проєктів на найновіші. Оскільки в мене в основному Rails та Java, то це тривіальні процедури: оновити версію Ruby на найновішу, що вийшла, а потім зробити bundle update. Жодна з версій залежностей в мене не залочена, тому я постійно живу на всьому останньому. В Java трішки складніше, там версії лочаться, тому треба піти й перевірити що зараз останнє, бо автокомпліт IntelliJ щось перестав працювати.

Звісно час від часу щось трохи відвалюється, але загалом все працює чудово, і я ніколи не маю проблем з тим що версії чого застаріли на два роки й оновитися дуже складно або просто неможливо.

Ось я вирішив оновити докерфайл проєкту, бо колись давно виникла проблема з alpine та однією з версій Ruby. Щось там крашилось, довелося змінити базовий імедж на debian-slim. Разом зі зміною я втратив jemalloc, але тоді це було не таким критичним.

Отже, я вирішив повернути все назад. Для Rails є гем (бібліотека), який генерує докерфайл, вже оптимізований, з шарами та усякими оптимізаціями щодо розміру імеджу на виході. Запустив-перегенерив.

Звернув увагу, що у мене не змінилась версія Yarn. Хто пам’ятає — це така альтернатива npm, яку написали у Facebook, коли npm був ще неоптимальним. З якоїсь причини це є дефолтний пакетний менеджер JS-залежностей в Rails. І от я дивлюся що він у мене версії типу 1.22.11 чи щось таке. Дивно, думаю, йду на офіційний сайт, а там пише що вже є 4.x.x. Дивлюся як його оновити, а там corepack enable⁣, а потім Yarn set version stable та Yarn install. WTF? Читаю далі, а виявляється що «we don’t tell you to run npm install -g yarn to install Yarn — we even recommend against it».

Коротше, в JavaScript придумали якусь штуку, що зветься corepack і тепер треба робити через неї. Також, вже досить давно, додали npx, але я не розумію, чим це відрізняється від npm.

Все як завжди. Поки в Java нічого не змінюється вже 10 (а то й більше) років і ти як запускав ./gradlew build, так і запускаєш, поки в Ruby ти як робив bundle install, так і робиш, джаваскріптери знову видумують щось нове.

Ну гаразд, ще можна відзначити Python, де vc-backed контора написала заміну pip, pyenv, virtualenv, poetry, setuptools та ще бозна-чому на Rust — uv. Зараз вона на хайпі, всі пісяють кіпятком, крім ортодоскальних пітоністів, які незадоволені тим, що пакетний менеджер Python написаний не на Python.

І це я ще не торкався теми фронтенду! Бо я так розумію, що вебпак уже давно потьмянів, і новий shiny object фронтендерів це Vite . То я ще не згадую про rollup (?), parcel (??) та esbuild (???), які можна використовувати для збірок фронтенду.

Зовсім забув про Bun та Deno! Що це, кому, навіщо?

Одним словом, джаваскріптова екосистема як була клоун фієстою 10 років тому, так такою й залишилась. І навіть стала гірше.

В чому причина? Популярність платформи? Ну так подивіться на Java або на PHP — там такої шляпи немає. Новизна? Камон, 10 років уже SPA-непотріб впевнено крокує по куцим просторам 8 Гб вашого макбуку, а ви так і не можете визначитися, чим ставити пакети.

Цей текст взято з особистого блогу після отримання дозволу автора.

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

Останні статті

Мої найважливіші кроки для вдосконалення коду в команді

Блогер та розробник Джозеф Круз розповів, як покращити роботу команди розробників, так показати їм справжню…

06.06.2025

Недооцінені фішки вашого смартфона, які спрощують життя

Щодня ми носимо в своїй кишені пристрій, що в сотні мільйонів разів потужніший за комп’ютер,…

05.06.2025

В чому різниця між фіксом та «костилем»?

Оце сиджу, працюю і задумався: «А де ж проходить та тонка межа між фіксом, який…

04.06.2025

Закон Гудгарта або як метрики змінюють цінності

«Коли вимірюваний показник стає метою, він перестає бути хорошою мірою» Закон який значною мірою відповідальний…

03.06.2025

Як приймати обдумані рішення за допомогою ChatGPT? Приклади промптів

Інколи здається, що ви врахували все. Упевненість у рішенні настільки висока, що ви вже подумки…

02.06.2025

Чи можете ви програмувати, не дивлячись на екран?

Блогер та розробник Джозеф Круз розповів, як він працює програмістом, маючи доволі серйозні проблеми із…

23.05.2025