snipgrapher؛ عکسگرفتن از کد با یه دستور
خلاصهٔ کاملتر
snipgrapher یه ابزار خطفرمانه که کارش ساده و مشخصه: از کد، تصویر میسازه. ورودیش میتونه یه فایل، ورودی stdin یا سورس inline باشه و برای هایلایت سینتکس از Shiki استفاده میکنه، با یه توکنایزر fallback داخلی برای وقتی که لازم بشه. این پروژه رو Matteo Collina منتشر کرده.
خروجی میتونه SVG، PNG یا WebP باشه؛ ابزار همیشه اول SVG رو رندر میکنه و بعد در صورت نیاز به PNG یا WebP تبدیلش میکنه. سر ظاهرش هم دستت بازه: شمارهخط، کنترلهای پنجره، سایه، پسزمینهٔ solid یا gradient، واترمارک و انتخاب فونت و تم. پشتیبانی از تم حالا کل ست اصلی Carbon رو هم شامل میشه.
علاوه بر CLI میتونی بهصورت برنامهای هم بهعنوان یه ماژول Node.js ازش استفاده کنی:
import { renderToFile } from 'snipgrapher';
await renderToFile({
code: 'export const greet = (name: string) => `Hello, ${name}!`;',
outputFile: './snippet.png',
format: 'png',
theme: 'dracula',
});همون گزینههای CLI اینجا بهشکل پراپرتیهای یه آبجکت میان.
برای کار انبوه هم حالت batch داره که با یه glob مجموعهای از فایلها رو با concurrency دلخواه رندر میکنه و حتی میتونه یه manifest بده. حالت watch فایل رو زیر نظر میگیره و با هر تغییر دوباره رندر میکنه. تنظیمات هم از فایلهای config با فرمت JSON، YAML یا TOML خونده میشه و میتونی چند profile (مثلاً یه profile مخصوص شبکههای اجتماعی) تعریف کنی.
میشه تنظیمات رو با متغیرهای محیطی SNIPGRAPHER_* هم override کرد و ترتیب اولویت مشخصه: فلگهای CLI بالاتر از متغیرهای محیطی، اونها بالاتر از فایل config و در آخر مقادیر پیشفرض. دستورهای کمکی مثل themes list، fonts، doctor و init (با یه ویزارد تعاملی) هم کار راهاندازی رو ساده میکنن.
نکات کلیدی:
- از فایل، stdin یا سورس inline تصویر کد میسازه
- خروجی SVG/PNG/WebP، و همیشه اول SVG رندر میشه
- هایلایت با Shiki و یه توکنایزر fallback؛ تمهای آماده شامل ست Carbon
- حالتهای batch و watch و یه API برنامهای برای Node.js
- تنظیم از config (JSON/YAML/TOML) و متغیرهای محیطی، با اولویت CLI > env > config > default




