SkateJS распространяется через npm-репозиторий и устанавливается как зависимость проекта. В минимальной конфигурации достаточно базового окружения Node.js и менеджера пакетов npm или yarn. SkateJS совместим с современными версиями JavaScript и ориентирован на модульную структуру кода.
npm install skatejs
При использовании yarn установка идентична по смыслу:
yarn add skatejs
После завершения установки в пакете проекта появится директория с исходными модулями SkateJS, доступными для импорта в прикладной код.
Для корректной сборки и модульного импорта SkateJS требуется базовая настройка bundler-инструмента. Наиболее распространённые варианты: Webpack, Rollup, Vite и Parcel. Независимо от выбранного сборщика необходимо обеспечить поддержку ES-модулей, а также разрешение импортов из node_modules.
Пример импорта SkateJS в точке входа проекта:
import { define, props } from 'skatejs';
При запуске сборки модуль будет включён в итоговый бандл приложения.
Для Webpack важна корректная настройка поля module и
указание режима сборки. Поддержка ES-модулей обеспечивается правилом
обработки файлов .js или .mjs, при
необходимости подключается Babel для трансформации кода под нужные
версии браузеров.
Минимальная конфигурация:
module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
path: __dirname + '/dist',
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.m?js$/,
exclude: /node_modules/,
use: 'babel-loader'
}
]
}
};
Rollup удобен при создании библиотечных пакетов и модульных систем.
Поддержка SkateJS обеспечивается через
@rollup/plugin-node-resolve и
@rollup/plugin-commonjs, чтобы корректно собирать
зависимости из npm.
Минимальный пример:
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
export default {
input: 'src/index.js',
output: {
file: 'dist/bundle.js',
format: 'esm'
},
plugins: [resolve(), commonjs()]
};
Vite предоставляет нативную поддержку ES-модулей и быструю дев-среду. SkateJS в проекте на Vite не требует дополнительной конфигурации: достаточно импортировать библиотеку и собрать проект.
При необходимости поддерживать старые браузеры включается Babel.
Необходимо подключить пресет @babel/preset-env с
соответствующими целями. SkateJS использует современные возможности
языка, что делает трансформацию особенно полезной при наличии требований
к совместимости.
Пример .babelrc:
{
"presets": [
["@babel/preset-env", {
"targets": "> 0.5%, not dead"
}]
]
}
Для продуктивной работы удобен локальный сервер с автоматической перезагрузкой. Его обеспечивает Vite или Webpack Dev Server. SkateJS хорошо интегрируется с выбранным инструментом и не накладывает дополнительных требований.
Старт разработки в среде Vite:
npm run dev
После запуска открывается локальный хост с собранным приложением, в котором можно импортировать и тестировать компоненты SkateJS.
После завершения установки и настроек стоит создать минимальный компонент на SkateJS и подключить его в DOM. Это позволяет убедиться в корректной работе сборки и правильной обработке импортов.
Пример компонента:
import { define, props, Component } from 'skatejs';
class App extends Component {
static props = {
title: props.string
};
render({ title }) {
return `<span>${title}</span>`;
}
}
define('demo-app', App);
Подключение компонента в HTML:
<demo-app title="Hello Skate"></demo-app>
Рендеринг компонента подтверждает рабочее окружение и корректность настройки модульной системы.
SkateJS реализует подход с использованием веб-компонентов и нативных возможностей браузера. Это снижает требования к дополнительным фреймворкам и оптимизирует размер итогового бандла. Однако в старых браузерах могут потребоваться полифиллы для API Custom Elements и Shadow DOM. Их рекомендуется подключать через отдельные npm-зависимости или CDN-источники.
Поддержка ESM и модульных импортов — ключевой аспект при настройке окружения. Большинство современных сборщиков удовлетворяют этим требованиям без дополнительной конфигурации.
При использовании TypeScript необходимо установить типы и настроить декларации:
npm install --save-dev typescript @types/skatejs
TypeScript-конфигурация (фрагмент):
{
"compilerOptions": {
"target": "ES6",
"module": "ESNext",
"moduleResolution": "Node",
"jsx": "preserve"
}
}
SkateJS корректно работает с TypeScript-классами и предоставляет строгую типизацию свойств компонентов.
Корректно установленное и настроенное окружение позволяет создавать компоненты SkateJS, интегрировать их в интерфейсы и компилировать в оптимизированный бандл. Сборщик отвечает за модулейную систему и транспиляцию, а SkateJS — за декларативное описание и поведение веб-компонентов.