Riot.js — лёгкий и эффективный фреймворк для построения компонентного интерфейса на JavaScript. Для масштабных проектов его использование практически всегда требует интеграции с современными системами сборки, такими как Webpack, Rollup или Vite. Эти инструменты позволяют компилировать компоненты Riot в чистый JavaScript, управлять зависимостями, оптимизировать код и ускорять разработку.
Конфигурация Webpack для Riot.js строится на основе
загрузчиков (loaders) и плагинов, обеспечивающих трансформацию
.riot файлов в валидный JavaScript.
Установка зависимостей:
npm install --save-dev webpack webpack-cli riot @riotjs/webpack-loader
Пример конфигурации
(webpack.config.js):
const path = require('path');
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.riot$/,
use: [
{
loader: '@riotjs/webpack-loader',
options: {
hot: true,
// Можно использовать TypeScript, если установлен соответствующий плагин
}
}
]
},
{
test: /\.js$/,
exclude: /node_modules/,
use: 'babel-loader'
}
]
},
resolve: {
extensions: ['.js', '.riot']
},
devServer: {
contentBase: path.join(__dirname, 'dist'),
hot: true
}
};
Особенности работы:
@riotjs/webpack-loader компилирует .riot
файлы в компоненты ES6.Rollup предпочтителен для библиотек и проектов, где требуется
минимальный размер сборки и Tree Shaking. Riot.js легко интегрируется
через плагин @riotjs/rollup-plugin.
Установка зависимостей:
npm install --save-dev rollup @rollup/plugin-node-resolve @rollup/plugin-babel @riotjs/rollup-plugin
Пример конфигурации
(rollup.config.js):
import resolve from '@rollup/plugin-node-resolve';
import babel from '@rollup/plugin-babel';
import riot from '@riotjs/rollup-plugin';
export default {
input: 'src/main.js',
output: {
file: 'dist/bundle.js',
format: 'iife', // Можно использовать es для модульных сборок
name: 'App'
},
plugins: [
resolve(),
riot(),
babel({ babelHelpers: 'bundled', exclude: 'node_modules/**' })
]
};
Ключевые моменты:
.riot файлы.Vite ориентирован на высокую скорость разработки и мгновенную отдачу
изменений. Для Riot.js предусмотрен плагин
vite-plugin-riot.
Установка зависимостей:
npm install vite @riotjs/vite-plugin
Пример конфигурации
(vite.config.js):
import { defineConfig } from 'vite';
import riot from '@riotjs/vite-plugin';
export default defineConfig({
plugins: [riot()],
build: {
outDir: 'dist',
rollupOptions: {
output: {
entryFileNames: 'bundle.js'
}
}
}
});
Особенности:
Совместные рекомендации:
ts-loader для Webpack,
@rollup/plugin-typescript, встроенный TypeScript в
Vite).Riot.js позволяет инкапсулировать CSS и шаблоны внутри
.riot компонентов. Для сборщиков рекомендуется
использовать:
style-loader и css-loader в Webpack.rollup-plugin-postcss.Интеграция стилей в компоненты обеспечивает локальный scope CSS, предотвращает конфликты и упрощает поддержку крупного интерфейса.
Каждая система сборки эффективно компилирует Riot.js компоненты, но выбор зависит от масштаба проекта, требований к оптимизации и удобства разработки.