Утилита решает задачи, схожие с shell-скриптами для запуска исполняемых файлов для текущей платформы, но при этом избавляет от необходимости включения в комплект исполняемых файлов для всех поддерживаемых платформ. DotSlash также позволяет хранить информацию о собранных исполняемых файлов в репозитории вместе с кодом, при этом размещая сами файлы на отдельных загрузочных серверах, что позволяет избежать роста размера репозитория и снизить нагрузку на систему ввода/вывода при выполнении операций клонирования.
При использовании DotSlash набор специфичных для разных платформ исполняемых файлов заменяется на один сценарий, включающий описание логики выбора исполняемого файла в привязке к поддерживаемым платформам. После запуска DotSlash-сценария необходимый для текущей платформы исполняемый файл динамически загружается, распаковывается, проверяется по криптографическому хэшу и сохраняется в локальном кэше для последующих запусков. Файлы передаются в сжатом виде. Сценарии DotSlash могут генерироваться автоматически для релизов, публикуемых на GitHub.
Пример DotSlash-сценария для распространения сборок Node.js 18.19.0 для платформ macOS ARM64, macOS x86_64 и Linux x86_64:
#!/usr/bin/env dotslash { "name": "node-v18.19.0", "platforms": { "macos-aarch64": { "size": 40660307, "hash": "blake3", "digest": "6e2ca33951e586e7670016dd9e503d028454bf9249d5ff556347c3d98c347c34", "format": "tar.gz", "path": "node-v18.19.0-darwin-arm64/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v18.19.0/node-v18.19.0-darwin-arm64.tar.gz" } ] }, "macos-x86_64": { "size": 42202872, "hash": "blake3", "digest": "37521058114e7f71e0de3fe8042c8fa7908305e9115488c6c29b514f9cd2a24c", "format": "tar.gz", "path": "node-v18.19.0-darwin-x64/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v18.19.0/node-v18.19.0-darwin-x64.tar.gz" } ] }, "linux-x86_64": { "size": 44694523, "hash": "blake3", "digest": "72b81fc3a30b7bedc1a09a3fafc4478a1b02e5ebf0ad04ea15d23b3e9dc89212", "format": "tar.gz", "path": "node-v18.19.0-linux-x64/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v18.19.0/node-v18.19.0-linux-x64.tar.gz" } ] } } }
Источник: http://www.opennet.ru/opennews/art.shtml?num=60562