🚀 All Your Base64
這是一款現代、高效且專門設計的命令行工具,可將任何可能的輸入文件轉換為 Base64 字符串,並提供全面的輸出選項。它採用 TypeScript 構建,兼顧了性能和開發者體驗。
🚀 快速開始
ayb64 encode myfile.jpg
ayb64 encode myfile.jpg --wrap 76
ayb64 encode image.png --data-uri
ayb64 encode document.pdf -o output.b64 --metadata
ayb64 decode SGVsbG8sIFdvcmxkIQ== -o hello.txt
echo "Hello, World!" | ayb64 encode
ayb64 info myfile.jpg --json
✨ 主要特性
- ✨ 現代且快速:採用 TypeScript 構建,性能經過優化。
- 🔍 智能檢測:通過 file-type 和 mime-types 實現行業領先的 MIME 類型檢測。
- 📁 輸入多樣:支持文件、標準輸入和字符串。
- 🎨 多格式輸出:支持原始格式、JSON、JS、TS、CSS、HTML、XML、YAML 和 Markdown。
- 🔄 雙向支持:支持編碼和解碼。
- 🛡️ 健壯可靠:具備全面的錯誤處理和驗證機制。
- 📊 元數據豐富:提供文件信息、哈希值和處理統計數據。
- 🎯 數據 URI 支持:可生成帶有正確 MIME 類型的數據 URI。
- 🌍 跨平臺兼容:支持 macOS、Linux、Windows、Docker 和雲環境。
📦 安裝指南
全局安裝(推薦)
npm install -g ayb64
本地安裝
npm install ayb64
使用 npx(無需安裝)
npx ayb64 --help
npx ayb64 --help
💻 使用示例
基礎用法
ayb64 encode myfile.jpg
高級用法
換行輸出
ayb64 encode file.txt --wrap 64
ayb64 encode file.txt --wrap 76
處理多個文件
for file in *.jpg; do
ayb64 encode "$file" -o "${file}.b64"
done
find . -name "*.png" -exec ayb64 encode {} -o {}.b64 \;
管道和重定向
curl -s https://example.com/image.jpg | ayb64 encode --data-uri
ayb64 encode file.txt | ayb64 decode -o restored.txt
base64 -d encoded.txt | ayb64 encode --format json
📚 詳細文檔
命令說明
encode / e
將輸入轉換為 Base64 格式。
ayb64 encode [input] [options]
參數:
input - 輸入文件路徑(使用 - 表示標準輸入)
選項:
-o, --output <path> - 輸出文件路徑(默認:標準輸出)
-f, --format <format> - 輸出格式:raw、json、js、ts、css、html、xml、yaml、md
-w, --wrap <columns> - 在指定列寬處換行輸出 Base64 字符串
-d, --data-uri - 生成帶有 MIME 類型的數據 URI
-m, --metadata - 輸出中包含文件元數據
--no-mime - 禁用 MIME 類型檢測
--quiet - 抑制非必要輸出
decode / d
將 Base64 輸入解碼回原始格式。
ayb64 decode [input] [options]
參數:
input - 輸入文件路徑或 Base64 字符串(使用 - 表示標準輸入)
選項:
-o, --output <path> - 輸出文件路徑(默認:標準輸出)
-m, --metadata - 如有可用元數據則顯示
--quiet - 抑制非必要輸出
info / i
顯示文件信息和元數據,不進行轉換。
ayb64 info <input> [options]
參數:
選項:
mcp
啟動用於 AI 代理的模型上下文協議(MCP)服務器。
ayb64 mcp
此命令啟動 MCP 服務器,該服務器提供針對 AI 代理和編碼工作流優化的 Base64 轉換工具。服務器包含內存、作業召回、校驗和和專用工具。
無選項 - MCP 服務器作為獨立進程通過標準輸入輸出進行通信。
batch / b
批量處理多個文件(即將推出)。
ayb64 batch <pattern> [options]
輸出格式
原始格式(默認)
ayb64 encode file.txt
JSON 格式
ayb64 encode file.txt --format json --metadata
{
"data": "SGVsbG8sIFdvcmxkIQ==",
"size": 22,
"metadata": {
"filename": "file.txt",
"mimeType": "text/plain",
"size": 13,
"hash": "abc123...",
"processingTime": 2
}
}
JavaScript/TypeScript 模塊
ayb64 encode file.txt --format js --metadata
const base64Data = 'SGVsbG8sIFdvcmxkIQ==';
const metadata = {
filename: 'file.txt',
mimeType: 'text/plain',
size: 13,
};
module.exports = { base64Data, metadata };
數據 URI
ayb64 encode image.png --data-uri
HTML 文檔
ayb64 encode file.txt --format html --metadata
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Base64 Data</title>
</head>
<body>
<div class="base64-data" data-content="SGVsbG8sIFdvcmxkIQ=="></div>
<div class="metadata">
<h3>File Information</h3>
<p><strong>Filename:</strong> file.txt</p>
<p><strong>MIME Type:</strong> text/plain</p>
<p><strong>Size:</strong> 13 bytes</p>
</div>
</body>
</html>
CSS 自定義屬性
ayb64 encode file.txt --format css
.base64-data {
--base64-content: 'SGVsbG8sIFdvcmxkIQ==';
}
.base64-data::before {
content: var(--base64-content);
}
MCP 服務器(適用於 AI 代理)
All Your Base64 包含一個強大的 模型上下文協議(MCP)服務器,專為 AI 代理和編碼任務進行了優化。MCP 服務器提供內存、作業召回、校驗和以檢測更改,以及適用於 AI 工作流的專用工具。
MCP 服務器特性
- 🧠 智能內存:使用 LRU 緩存,可通過 ID 召回作業。
- 🔍 更改檢測:使用 SHA256 校驗和檢測文件修改。
- 🤖 AI 優化:專為編碼和開發工作流設計的工具。
- 📋 作業歷史:跟蹤和召回先前的編碼操作。
- 🔗 數據 URI:為圖像和資產生成適用於 Web 的數據 URI。
- ⚡ 高性能:輕量級、可擴展且健壯。
MCP 服務器工具
encode - 對文件/數據進行編碼,支持格式選項和作業跟蹤。
decode - 解碼 Base64,自動檢測並輸出文件。
recall - 通過 ID 檢索先前的作業,包含完整上下文。
jobs - 列出最近的操作及其元數據。
datauri - 生成針對 Web 開發優化的數據 URI。
memory - 管理作業緩存(統計信息、清除)。
使用 MCP 服務器
啟動 MCP 服務器
ayb64 mcp
ayb64-mcp
npm run mcp
npx tsx src/mcp-server.ts
在 MCP 客戶端中配置
VS Code/Cursor/Cline(添加到 mcp.json):
{
"mcpServers": {
"ayb64": {
"command": "ayb64",
"args": ["mcp"]
}
}
}
Claude Desktop:
{
"mcpServers": {
"ayb64": {
"command": "ayb64-mcp"
}
}
}
MCP 工作流示例
編碼圖像以供 Web 使用:
工具:encode
輸入:{
"data": "/path/to/logo.png",
"isFile": true,
"format": "js",
"dataUri": true
}
輸出:作業 ID + 包含數據 URI 的 JavaScript 常量
召回先前的作業:
工具:recall
輸入:{"jobId": "job_1234567890_abc123"}
輸出:包含元數據的完整原始結果
為 CSS 生成數據 URI:
工具:datauri
輸入:{"input": "/path/to/background.jpg"}
輸出:data:image/jpeg;base64,...(適用於 CSS)
🔧 技術細節
API 參考
文件信息輸出
使用 --metadata 選項時,將獲得全面的文件信息:
{
"filename": "example.jpg",
"mimeType": "image/jpeg",
"size": 153600,
"created": "2023-01-01T00:00:00.000Z",
"modified": "2023-01-02T00:00:00.000Z",
"hash": "sha256:a1b2c3d4...",
"processingTime": 15
}
支持的 MIME 類型
該工具使用 file-type 包自動檢測文件類型,支持以下類型:
- 圖像:JPEG、PNG、GIF、WebP、SVG、BMP、TIFF、ICO
- 文檔:PDF、DOC、DOCX、XLS、XLSX、PPT、PPTX
- 存檔:ZIP、RAR、7Z、TAR、GZIP、BZIP2
- 媒體:MP4、AVI、MOV、MP3、WAV、OGG、FLAC
- 文本:純文本、HTML、CSS、JavaScript、JSON、XML、YAML、Markdown
- 字體:TTF、OTF、WOFF、WOFF2、EOT
- 以及更多...
性能
基準測試
| 文件大小 |
時間 |
內存 |
| 1 KB |
5ms |
0 B |
| 1 MB |
8ms |
92.26 KB |
| 10 MB |
51ms |
170.35 KB |
| 100 MB |
523ms |
257.27 KB |
| 200 MB |
1.0s |
447.2 KB |
基準測試在真實硬件上運行:MacBook Pro,2.4 GHz 8 核 Intel Core i9,32GB DDR4,macOS 15.6.1
性能說明:
- 內存使用顯示編碼過程中的峰值堆增長。
- 採用非常節省內存的 Base64 實現。
- 處理時間隨文件大小合理增長。
使用 npm run benchmark 在真實硬件上運行基準測試
優化建議
- 使用原始格式 以獲得最佳性能。
- 避免使用元數據 進行簡單轉換。
- 根據使用場景選擇合適的換行設置。
- 逐個處理文件,而不是批量處理大文件。
配置
環境變量
AYB64_MAX_MEMORY - 最大內存使用閾值
AYB64_QUIET - 默認安靜模式設置
配置文件
創建 ~/.ayb64rc.json 以設置默認值:
{
"format": "raw",
"wrap": 76,
"metadata": false
}
集成示例
Node.js 腳本
const { spawn } = require('child_process');
function encodeFile(filePath) {
return new Promise((resolve, reject) => {
const child = spawn('ayb64', ['encode', filePath, '--format', 'json']);
let output = '';
child.stdout.on('data', (data) => {
output += data.toString();
});
child.on('close', (code) => {
if (code === 0) {
resolve(JSON.parse(output));
} else {
reject(new Error(`Process exited with code ${code}`));
}
});
});
}
Web 開發
為 CSS 生成數據 URI:
ayb64 encode logo.png --data-uri > logo-data.css
創建 JavaScript 模塊:
for file in assets/*.png; do
ayb64 encode "$file" --format js -o "${file%.png}.js"
done
CI/CD 管道
- name: Encode assets
run: |
for file in dist/assets/*; do
ayb64 encode "$file" --format json --metadata > "$file.json"
done
錯誤處理
All Your Base64 提供全面的錯誤處理和有用的建議:
$ ayb64 encode nonexistent.txt
錯誤:文件未找到:nonexistent.txt
建議:
• 檢查文件路徑是否正確
• 確保文件存在
路徑:nonexistent.txt
常見錯誤類型:
- 文件未找到 - 檢查文件路徑和權限。
- 無效的 Base64 - 解碼時驗證輸入格式。
- 權限被拒絕 - 檢查文件/目錄權限。
- 無效的格式 - 使用
--help 查看支持的格式。
故障排除
常見問題
問:“Cannot find module 'file-type'”
答:運行 npm install 安裝依賴項。
問:“Permission denied” 錯誤
答:檢查文件權限:chmod +r filename 或使用適當的權限運行。
問:輸出損壞
答:確保在 shell/終端中正確處理二進制數據。
調試模式
設置調試環境變量以獲取詳細輸出:
DEBUG=ayb64:* ayb64 encode file.txt
📄 許可證
本項目採用 MIT 許可證,版權歸 Joe Peterson 所有。
致謝
MIME 類型檢測支持
All Your Base64 藉助了開源社區的優秀成果來實現強大的文件類型檢測:
這些包提供了企業級的文件檢測功能,獨立實現和維護這些功能可能需要數年時間。我們站在了巨人的肩膀上!🚀
開源依賴
本項目基於以下優秀的開源包構建,並對它們表示感謝:
平臺支持
All Your Base64 在多個平臺上無縫運行:
- 🍎 macOS - 原生支持,具備正確的文件系統處理能力。
- 🐧 Linux - 全部分發版兼容。
- 🪟 Windows - 支持 PowerShell、命令提示符和 WSL。
- 📦 Docker - 適用於 CI/CD 管道的容器化支持。
- ☁️ 雲環境 - 支持 AWS Lambda、Google Cloud Functions、Azure Functions。
變更日誌
v1.0.0
- 初始版本發佈
- 核心編碼/解碼功能
- 多種輸出格式
- 全面的錯誤處理
- 完整的測試覆蓋
用心打造 ❤️,咖啡助力 ☕
"起初,有比特,比特與 Base64 同在,比特就是 Base64。"