Стендап Сьогодні 📢 Канал в 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 погано підходить, бо він фактично однопроцесорний.