Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!25.11.2022
Як дістати перелік залежностей для проєктів на Ruby, JavaScript, Golang
💎☕🐹 Закінчив зі збором залежностей для всіх трьох моїх головних мов - Ruby, JavaScript, Golang. Виявилось, що для Ruby було складніше за все.
В JavaScript залежності перелічені в файлі package.json
, який як звичайний JSON легко прочитати. Далі є API npm.js https://api.npms.io/v2/package/:packagename
, звідки дізнаємось домашню адресу пакета. (До речі, і цей API, і API RubyGems відкриті, бо всі їми користуються кожного разу, як встановлюють пакети.)
В Go залежності містяться в файлі go.mod
. (Принаймні, в сучасному Go, бо раніше було декілька альтернатив, а зараз все стабілізувалось.)
Файл go.mod
нестандартного формату, але не складніше, ніж Gemfile.lock
. До того ж оскільки в Go назва пакета — це адреса його репозиторію, то ці адреси ми дізнаємось безпосередньо.
Залишилось трохи причепурити та можна випускати у світ.
Весь скрипт написаний на Ruby, бо взагалі такі аналітичні штуки мати приємний вигляд саме цією мовою. Але, скажете ви, а як же ж купа запитів до API? Хіба не краще було їх паралелізувати, як то пропонує підручник по Go? А на Ruby паралелізувати операції, що блокують можна не гірше, практично в один рядок. Це тільки якщо у вас складні обчислення, то Ruby погано підходить, бо він фактично однопроцесорний.