Superstruct распространяется как npm-пакет и устанавливается стандартными средствами экосистемы JavaScript. Библиотека не требует дополнительных runtime-зависимостей и может использоваться как в Node.js, так и в браузерных сборках.
Основной способ установки через npm:
npm install superstruct
Альтернативные менеджеры пакетов:
yarn add superstruct
pnpm add superstruct
После установки пакет становится доступен для импорта в модулях ES и CommonJS.
Современный способ использования ориентирован на ESM-синтаксис:
import { struct, string, number } from "superstruct";
Такой вариант применяется в проектах, где используется
"type": "module" в package.json либо
современный бандлер (Vite, Rollup, Webpack 5+).
Пример базовой структуры:
import { object, string, number, assert } from "superstruct";
const User = object({
name: string(),
age: number(),
});
assert({ name: "Alex", age: 25 }, User);
ESM-импорт обеспечивает лучшую совместимость с tree-shaking, что уменьшает итоговый размер бандла.
В старых Node.js-проектах или при использовании require
библиотека подключается следующим образом:
const { object, string, number } = require("superstruct");
Пример использования аналогичен ESM-версии:
const { assert, object, string, number } = require("superstruct");
const User = object({
name: string(),
age: number(),
});
assert({ name: "Maria", age: 30 }, User);
Несмотря на поддержку CommonJS, внутренняя структура пакета оптимизирована под ESM, поэтому в современных проектах предпочтителен первый вариант.
В приложениях на React, Vue, Angular или Svelte библиотека подключается через сборщик. После установки через npm импорт выполняется напрямую:
import { object, string } from "superstruct";
Бандлер автоматически включает только используемые части библиотеки. Это важно для оптимизации, так как Superstruct имеет модульную архитектуру.
Для быстрых прототипов и тестирования без сборки возможна загрузка через CDN:
<script type="module">
import { struct, string } from "https://cdn.skypack.dev/superstruct";
</script>
Либо через альтернативные CDN:
<script type="module">
import { object, number } from "https://esm.sh/superstruct";
</script>
CDN-версия особенно полезна в средах, где отсутствует npm-инфраструктура.
Node.js поддерживает как ESM, так и CommonJS режим. При использовании чистого Node.js ESM необходимо указать тип модуля:
{
"type": "module"
}
После этого импорт становится возможным напрямую:
import { string, number } from "superstruct";
При использовании CommonJS-файлов .cjs сохраняется
вариант с require.
После установки пакет можно проверить простым импортом и созданием структуры:
import { assert, string } from "superstruct";
assert("ok", string());
Если код выполняется без ошибок, библиотека подключена корректно.
Superstruct изначально написана на TypeScript, поэтому типы включены
в пакет и не требуют отдельной установки @types.
Пример использования в TypeScript:
import { object, string, number, Infer } from "superstruct";
const User = object({
name: string(),
age: number(),
});
type UserType = Infer<typeof User>;
Тип Infer позволяет автоматически извлекать структуру
данных из схемы.
Библиотека поддерживает следующие среды:
Не требуется полифиллов или дополнительных зависимостей.
При установке и импорте могут возникать типовые проблемы:
1. Ошибка “Cannot find module superstruct” Причина — пакет не установлен или установка выполнена в другом каталоге проекта.
2. Ошибка ESM/CJS несовместимости Возникает при
попытке использовать import в проекте без
"type": "module".
3. Проблемы с CDN Часто связаны с блокировкой внешних модулей или неправильным указанием версии.
Модульная структура Superstruct позволяет импортировать только необходимые функции. Это влияет на:
Пример частичного импорта:
import { string } from "superstruct";
В отличие от монолитных библиотек, здесь отсутствует необходимость подключать весь набор валидаторов.
В монорепозиториях установка выполняется на уровне корня:
pnpm add superstruct -w
Далее пакет становится доступен во всех подпроектах без повторной установки.
В серверных приложениях Superstruct часто применяется для:
Подключение идентично обычному Node.js:
import { object, string } from "superstruct";
Современные сборщики автоматически анализируют ESM-граф зависимостей. Благодаря этому Superstruct:
Подключение библиотеки сводится к выбору одного из трёх сценариев: