Нативная ESM-коллекция SVG-флагов городов Республики Татарстан. Пакет можно использовать как npm-зависимость в JavaScript/TypeScript-проекте или как подключаемый набор SVG-файлов и ленивых загрузчиков.
Список основан на странице Wikipedia "Городские населённые пункты Татарстана", раздел "Города": 24 города. Посёлки городского типа не включены.
Коллекция содержит 24 готовых оптимизированных SVG-флага. Исходные файлы проекта находятся в assets/<slug>/index.svg, а при сборке их копии попадают в dist/flags/<slug>.svg.
- 24 флага городов в формате SVG.
- ESM-сборка с TypeScript-типами.
- Ленивые загрузчики для каждого флага.
- Поиск флага по slug, коду, русскому/английскому названию или alias.
- Прямой импорт SVG-файлов через
flags/<slug>илиsvg/<slug>.
npm install @russian-flags/republic-of-tatarstanДля локальной проверки из отдельного проекта-потребителя:
npm install /path/to/republic-of-tatarstanimport { loadFlag, settlements } from "@russian-flags/republic-of-tatarstan";
console.log(settlements[0]);
// {
// slug: "agryz",
// code: "AGRYZ",
// nameRu: "Агрыз",
// nameEn: "Agryz",
// aliases: ["Әгерҗе"],
// }
const image = await loadFlag("kazan", {
alt: "Флаг Казани",
className: "flag",
});
document.body.append(image);loadFlag - алиас для loadFlagImage. Функция лениво импортирует модуль нужного флага, создаёт <img> и по умолчанию ставит loading="lazy" и decoding="async".
API создания изображений (loadFlag, loadFlagImage, createFlagImage) рассчитан на браузер и требует глобальный Image/DOM. Метаданные и функции поиска можно использовать в Node.js без DOM.
import kazanFlag from "@russian-flags/republic-of-tatarstan/flags/kazan";
import kazanSvg from "@russian-flags/republic-of-tatarstan/svg/kazan";
console.log(kazanFlag);
console.log(kazanSvg);Вариант с расширением тоже поддерживается:
import kazanFlag from "@russian-flags/republic-of-tatarstan/flags/kazan.svg";
import kazanSvg from "@russian-flags/republic-of-tatarstan/svg/kazan.svg";flags/<slug> и svg/<slug> указывают на один и тот же файл внутри пакета:
dist/flags/<slug>.svg
Default-импорт SVG возвращает URL-строку и требует сборщик с поддержкой SVG-ассетов, например Vite, webpack или Parcel. Нативный Node.js не импортирует .svg как JavaScript-модуль; для него используйте метаданные пакета или обычный путь к файлу.
После публикации пакет также можно использовать как источник SVG через npm CDN:
<img src="https://unpkg.com/@russian-flags/republic-of-tatarstan@1.0.0/dist/flags/kazan.svg" alt="Флаг Казани" />В большинство функций можно передавать:
- slug:
"kazan"; - код:
"KAZAN"; - русское название:
"Казань"; - английское название:
"Kazan"; - alias:
"Казан".
import {
resolveSettlementSlug,
settlementSlugs,
settlements,
} from "@russian-flags/republic-of-tatarstan";
console.log(settlements.length); // 24
console.log(settlementSlugs.includes("kazan")); // true
console.log(resolveSettlementSlug("KAZAN")); // "kazan"
console.log(resolveSettlementSlug("Казань")); // "kazan"
console.log(resolveSettlementSlug("Казан")); // "kazan"
console.log(resolveSettlementSlug("NABEREZHNYE_CHELNY")); // "naberezhnye-chelny"
console.log(resolveSettlementSlug("Яр Чаллы")); // "naberezhnye-chelny"
console.log(resolveSettlementSlug("unknown")); // undefinedВвод нормализуется: пробелы по краям удаляются, регистр не важен, ё считается как е, пробелы и _ заменяются на -.
preloadFlag запускает загрузку модуля флага без ожидания результата. Это удобно на hover, focus или перед появлением строки во viewport.
import { preloadFlag } from "@russian-flags/republic-of-tatarstan";
button.addEventListener("pointerenter", () => {
preloadFlag("kazan");
});Неизвестные значения игнорируются и не выбрасывают ошибку.
| Экспорт | Описание |
|---|---|
settlements |
Массив метаданных { slug, code, nameRu, nameEn, aliases }. |
settlementSlugs |
Массив всех доступных slug. |
normalizeSettlementInput(input) |
Нормализует пользовательский ввод перед поиском. |
resolveSettlementSlug(input) |
Возвращает slug по slug, коду, названию или alias. |
getFlagModuleLoader(input) |
Возвращает ленивый загрузчик модуля флага или undefined. |
loadFlagModule(input) |
Лениво импортирует модуль флага. Бросает ошибку для неизвестного значения. |
loadFlagImage(input, options) |
В браузере загружает флаг и возвращает HTMLImageElement; отклоняет Promise для неизвестного значения. |
loadFlag(input, options) |
Алиас для loadFlagImage с тем же поведением. |
preloadFlag(input) |
Запускает загрузку модуля без ожидания результата. |
createFlagImage(src, defaultAlt, options) |
Создаёт и настраивает <img> для SVG-флага. |
import type {
FlagImageOptions,
FlagImageAttributeValue,
FlagImageFactory,
FlagModule,
SettlementInput,
SettlementMeta,
SettlementSlug,
} from "@russian-flags/republic-of-tatarstan";cd examples
npm install
npm run devVite откроет страницу примера в браузере. В отличие от npm API пакета, пример отображает SVG напрямую из assets.
npm install
npm run build
npm test
npm run typecheck
npm run pack:dry
npm run release:checkСборка устроена так:
scripts/build-source.jsчитаетsrc/settlements.ts, проверяетassets/<slug>/index.svgи генерирует TypeScript-исходники.scripts/build.jsсобирает JavaScript черезesbuildи копирует SVG вdist/flags/<slug>.svg.tsc -p tsconfig.build.jsonгенерирует.d.tsфайлы вdist.
Чтобы обновить флаг, положите SVG в assets/<slug>/index.svg и запустите сборку.
- GitHub: https://github.com/russian-flags/republic-of-tatarstan
- Issues: https://github.com/russian-flags/republic-of-tatarstan/issues
Код пакета распространяется по лицензии MIT. SVG-флаги изображают официальные муниципальные символы и не лицензируются этим пакетом на условиях MIT. Использование названий, эмблем и официальных символов может регулироваться отдельно; подробности см. в LICENSE.