Утилита решает задачи, схожие с 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
