Ansis: کتابخانه رنگآمیزی ترمینال برای جاوااسکریپت
خلاصهٔ کاملتر
Ansis یه کتابخانه کوچیک و سریع برای اضافه کردن رنگ و استایل به خروجی ترمیناله. ANSI escape code — دنبالههای خاصی هستن که ترمینال ازشون برای نمایش رنگ و استایل استفاده میکنه — و Ansis این کدها رو به شکل یه API روان و زیبا بهت میده. حجمش فقط ۵.۸ کیلوبایته در مقایسه با Chalk که ۴۴ کیلوبایته، و در بنچمارکهای ترکیب دو استایل یا بیشتر با ۶۰ میلیون عملیات در ثانیه سریعترین گزینهست.
سینتکس Ansis خیلی تمیزه. میتونی استایلها رو زنجیروار به هم وصل کنی، از template literal استفاده کنی و حتی تمپلیتها رو تو در تو بنویسی بدون اینکه نیازی به رشتهبهمچسبانی داشته باشی:
import { red, cyan, bold, hex, rgb } from 'ansis';
console.log(bold.bgRed` FAIL `);
console.log(red`✖ Error: ${cyan`file.js`} not found`);
console.log(hex('#FF75D1').bold`Pink`);
console.log(rgb(224, 17, 95).italic`Ruby`);از نظر رنگ، هر سه سطح رو پوشش میده: ۱۶ رنگ پایه ANSI، ۲۵۶ رنگ با fg(n) و bg(n)، و Truecolor کامل با hex() و rgb(). اگه ترمینال کاربر سطح پایینتری داشته باشه، Ansis بهصورت خودکار رنگ رو به نزدیکترین معادل موجود تبدیل میکنه (Truecolor → 256 → 16 → بدون رنگ).
با متد extend() میتونی رنگهای سفارشی با نام دلخواه تعریف کنی و حتی متدهای پسزمینه (bg*) بهصورت خودکار ساخته میشن:
const myTheme = { orange: '#ffa500', pink: '#ffc0cb' };
const color = ansis.extend(myTheme);
color.orange.bold`orange bold`;
color.bgOrange`orange background`; // auto-generated bg tagقابلیتهای دیگهای مثل ساخت هایپرلینک در ترمینال با link(url, text)، حذف کدهای ANSI با strip()، و کنترل دقیق سطح رنگ با new Ansis(level) هم وجود داره. متغیرهای محیطی NO_COLOR و FORCE_COLOR و فلگهای CLI مثل --no-color هم بهصورت کامل پشتیبانی میشن.
Ansis با ESM، CJS، TypeScript، Node.js 10+، Bun، Deno، Next.js، محیطهای CI و مرورگرهای Chromium-based سازگاره و میتونه جایگزین مستقیم Chalk، ansi-colors، colorette و چند کتابخانه دیگه باشه. از Node.js 22 به بعد هم util.styleText() برای موارد ساده وجود داره، ولی Ansis قابلیتهای بیشتری مثل رنگهای ۲۵۶ تایی، Truecolor و nested template داره که styleText() ازشون پشتیبانی نمیکنه.
نکات کلیدی:
- حجم فقط ۵.۸ کیلوبایت — در مقابل ۴۴ کیلوبایت Chalk
- سریعترین کتابخانه در ترکیب دو استایل یا بیشتر (60M ops/sec)
- پشتیبانی از ۱۶ رنگ، ۲۵۶ رنگ و Truecolor (hex/rgb)
- سینتکس زنجیرهای و template literal تو در تو
- تشخیص خودکار سطح رنگ ترمینال و fallback هوشمند
- جایگزین مستقیم Chalk و چند کتابخانه مشابه
- سازگار با Node.js، Bun، Deno، CI و مرورگرهای Chromium




