Комментарии 7
Очень любопытно, надо проверить как будет на деле работать, спасибо!
Занятно! Вот только ничего что ваш npm пакет весит ~200Mb (из-за того что все возможные комбинации бинарей в нем), да и как-то органичнее было бы для npm сделать свой велосипед проект на node, чтоб "одна среда, один язык" да без внешних зависимостей.. Как мне кажется, как иследдовательская работа - прикольно! Как тула чтоб кому-то посоветовать - врятли.
Хорошее замечание! Да в репозитории есть ишью на это. Проблема не в том что нужно писать именно на ноде чтобы пакет немного весил. Можно поставлять в npm пакете в зависимостях компилятор Go и исходные файлы на go. Билд будет происходить при установке из npm под конкретную систему.
Вначале сделал как было проще, для проверки концепции. Обязательно доработаю.
Билд будет происходить при установке из npm под конкретную систему
Пожалуйста, не надо так делать :( Хотя, npm-экосистему уже врятли что-то спасет..
Почему такое мнение? Очень много инструментов использует подобный подход компилируя разные языки для утилит на ноде.
Это сделано для того чтобы можно было поставлять в другие экосистемы один и тот же код а не писать каждую реализацию на каждом языке под свою экосистему.
Как-то мне приходилось собирать проект на ноде, который в зависимоятях тянул пакет что использует python, который через свое подобие FFI запускал функции из rust. А потом его надо было собрать под arm или какая-то из зависимостей обновилась, но не ее зависимость.. Ад был тот еще. Да и не только с нодовыми проектами в такое влетал.
Позиция заключается в том, что "если ты можешь - это не значит что ты должен" + Hell is paved with good intentions. Если ты хочешь делать что-то подобное то, скорее всего, твоя дорога сворачивает не туда. Да, ваш проект крохотный, но импакт и пример другим заставит их думать "ну норм же, вон, другие так делают".
Очень много инструментов использует подобный подход
Скорее всего тех, где просто нет возможности иначе. Вот нет её. Вот совсем. Ну невозможно иначе. Никак, ваапще. Если есть хоть малейшая возможность не раздувать зависимости - не надо делать этого. Пардон, но вы имеете желание ради парсинга строк и сисколов создания директорий/записи файлов, в которые нода умеет прекрасно - тянуть целиком компилятор другого языка с исходниками собственной тулы, да компилить на целевой тачке во время установки зависимостей. Неужели этого не смущает по умолчанию? ;)
Ну писать свою реализацию под каждую экосистему тоже кажется плохим решением разные источники больше проблем, а портируя из одного источника мы можем быть уверены что если уж запустилась то будет работать так же как и в другом месте потомучто запускаем бинарь.
Я думаю что подобных утилит для дев окружения которые просто повышают DX это не критично один раз поставилось скомпилировалось автоматически и забыли, продакшен сборка и CI даже ничего не знает про это. Даже если она не запустится на какой нибудь специфичной платформе это не критическая проблема. Но вероятно что где то не запустится, поэтому поставлять бинарь поидее самое надежное, но и в реализации на ноде данного проекта могли бы возникнуть проблемы с зависимостями парсера Yaml и шаблонизатора Jinja. Вопрос требует детального изучения
А что вы думаете про WASM? Тоже плохая идея?

Как мне надоело создавать файлы и папки