Rubli.jsv2.3.0FAQGitHub ↗

Rubli.js

Форматирование рублёвых сумм для интерфейсов: разряды, копейки, знак валюты и склонения. Один килобайт, без зависимостей, работает в браузере и Node.

📦 1.1 КБ gzip🧩 ESM + CJS🟢 TypeScript-типы🪶 без зависимостей

Установка

npm install rubli

Или подключите файл напрямую:

<script src="/vendor/rubli.min.js"></script>

Быстрый старт

import { rub } from "rubli";

rub(1234567.5);              // "1 234 567,50 ₽"
rub(990, { kopecks: false }); // "990 ₽"
rub(-1500);                  // "−1 500 ₽"
💡
Неразрывный узкий пробелРазделитель разрядов не даёт сумме переноситься на новую строку. Отключается параметром space.

API

rub(amount, options?)

Принимает число или строку, возвращает строку. Копейки округляются до двух знаков по правилам банковского округления.

parse(text)

Обратная операция: parse("1 234,50 ₽") → 1234.5. Понимает пробелы, запятую и точку, знак валюты в любом месте.

words(amount)

Сумма прописью для документов: words(1500) → "одна тысяча пятьсот рублей 00 копеек".

⚠️
Только рублиДругие валюты не поддерживаются намеренно — для них есть Intl.NumberFormat.

Параметры

ПараметрПо умолчаниюЧто делает
kopeckstrueПоказывать копейки. "auto" — только если не ноль.
sign"₽"Знак валюты: "₽", "руб." или пустая строка.
space" "Разделитель разрядов.
minus"−"Символ для отрицательных сумм (типографский минус).

Склонения

Функция plural(n, ["рубль", "рубля", "рублей"]) возвращает нужную форму: 1 рубль, 2 рубля, 5 рублей, 21 рубль, 111 рублей.

plural(3, ["товар", "товара", "товаров"]); // "товара"

Частые вопросы

Почему не Intl.NumberFormat?

Он подходит, но даёт «1 234,50 ₽» с обычным пробелом и не умеет прописью и склонения. Rubli.js — тонкая надстройка ровно для этих трёх задач.

Поддерживаются ли другие валюты?

Нет, и не планируются: библиотека намеренно узкая. Для мультивалютности используйте Intl.

Демо-сайт: документация библиотеки сделана нейросетью и опубликована на Tuqo. Библиотека вымышленная.

На этой страницеУстановкаБыстрый стартAPIПараметрыСклоненияFAQ