#executable #tar #build #file #command-line-tool #repository #blake3

app dotslash

命令行工具,用于方便地获取可执行文件、缓存它,然后运行它

3 个版本 (破坏性)

0.4.1 2024年4月10日
0.4.0 2024年4月10日
0.3.0 2024年3月28日
0.2.0 2024年2月6日
0.0.0 2021年10月8日

#31 in 缓存

每月23次下载

MIT/Apache

135KB
3K SLoC

DotSlash:简化可执行文件部署

License Build Status

DotSlash (dotslash) 是一个命令行工具,允许您使用一个等效的小型、易于阅读的文本文件来表示一组针对特定平台的重量级可执行文件。这反过来使得在不损害仓库大小的情况下将可执行文件存储在源代码管理中变得高效。这为将构建工具链和其他工具直接检查到仓库中铺平了道路,从而减少了对外部环境的依赖,并促进了可重复构建。

我们将用一个从 DotSlash 网站摘取的示例来说明这一点。传统上,如果您想在项目中打包特定版本的 Node.js,并且需要支持 macOS 和 Linux,您可能至少需要两个二进制文件(一个用于 macOS,一个用于 Linux)以及一个如下的 shell 脚本

#!/bin/bash

# Copied from https://stackoverflow.com/a/246128.
DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"

if [ "$(uname)" == "Darwin" ]; then
  # In this example, assume node-mac-v18.16.0 is a universal macOS binary.
  "$DIR/node-mac-v18.16.0" "$@"
else
  "$DIR/node-linux-v18.16.0" "$@"
fi

exit $?

使用 DotSlash,可以将 shell 脚本和二进制文件替换为一个名为 node 的单个文件

#!/usr/bin/env dotslash

// The URLs in this file were taken from http://node.org.cn/dist/v18.19.0/

{
  "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": "http://node.org.cn/dist/v18.19.0/node-v18.19.0-darwin-arm64.tar.gz"
        }
      ]
    },
    // Note that with DotSlash, it is straightforward to specify separate
    // binaries for different platforms, such as x86 vs. arm64 on macOS.
    "macos-x86_64": {
      "size": 42202872,
      "hash": "blake3",
      "digest": "37521058114e7f71e0de3fe8042c8fa7908305e9115488c6c29b514f9cd2a24c",
      "format": "tar.gz",
      "path": "node-v18.19.0-darwin-x64/bin/node",
      "providers": [
        {
          "url": "http://node.org.cn/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": "http://node.org.cn/dist/v18.19.0/node-v18.19.0-linux-x64.tar.gz"
        }
      ]
    }
  }
}

假设 dotslash 在您的 $PATH 上,并且您记得使用 chmod +x node 将其标记为可执行,现在您可以像以前一样运行您的 Node.js 包装器

$ ./node --version
v18.16.0

第一次运行 ./node --version 时,您可能会经历一小段时间延迟,因为 DotSlash 正在检索、解压缩并验证适当的 .tar.gz,但后续调用应该是瞬间的。

要了解底层的运作原理,请阅读关于DotSlash如何工作的文章。

安装DotSlash

请参阅DotSlash网站上的安装说明

许可证

DotSlash受MIT许可证和Apache-2.0许可证的双重许可;具体条款可以在LICENSE-MITLICENSE-APACHE文件中找到。

依赖项

~9–20MB
~300K SLoC