Atomico — это современная библиотека для разработки веб-компонентов на JavaScript с реактивным подходом, поддерживающая интеграцию с различными сборщиками и инструментами разработки. Эффективная работа с Atomico требует понимания того, как настраиваются сборщики, обеспечивающие компиляцию и бандлинг компонентов, а также оптимизацию для браузеров.
Vite является рекомендуемым инструментом для сборки проектов с Atomico благодаря высокой скорости и поддержке современных стандартов JavaScript.
Основные моменты настройки:
Установка зависимостей
npm install vite @atomico/cli --save-dev
@atomico/cli обеспечивает интеграцию с Vite и
оптимизацию веб-компонентов.
Конфигурация vite.config.js Важные
параметры включают:
build.lib — режим сборки библиотеки.rollupOptions — управление входными точками и внешними
зависимостями.Пример:
import { defineConfig } from 'vite';
import { atomico } from '@atomico/cli/vite';
export default defineConfig({
plugins: [atomico()],
build: {
lib: {
entry: 'src/index.js',
name: 'MyComponents',
fileName: (format) => `my-components.${format}.js`,
},
rollupOptions: {
external: ['lit', 'react'],
output: {
globals: {
lit: 'Lit',
react: 'React'
}
}
}
}
});Особенности разработки
atomico() автоматически обрабатывает .jsx
и .tsx файлы, создавая оптимизированные
веб-компоненты.HMR) работает без дополнительной
настройки.Для существующих проектов на Webpack можно настроить сборку Atomico следующим образом:
Установка зависимостей
npm install webpack webpack-cli babel-loader @babel/core @babel/preset-env --save-devКонфигурация Webpack
(webpack.config.js) Включает обработку JSX и
модульную сборку:
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
library: 'MyComponents',
libraryTarget: 'umd',
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
},
resolve: {
extensions: ['.js', '.jsx']
}
};Оптимизация
mode: 'production' автоматически включает
минимизацию и tree-shaking.externals,
чтобы исключить их из финального бандла.Rollup обеспечивает более тонкую настройку библиотек Atomico, особенно при публикации npm-пакетов:
Установка Rollup
npm install rollup @rollup/plugin-node-resolve @rollup/plugin-babel --save-devКонфигурация rollup.config.js
import resolve from '@rollup/plugin-node-resolve';
import babel from '@rollup/plugin-babel';
export default {
input: 'src/index.js',
output: {
file: 'dist/my-components.js',
format: 'esm',
},
plugins: [
resolve(),
babel({ babelHelpers: 'bundled', presets: ['@babel/preset-env'] })
],
external: ['react', 'lit']
};Особенности
@rollup/plugin-babel позволяет использовать
современные возможности JavaScript, сохраняя совместимость с более
старыми браузерами.Ключевые методы улучшения производительности:
Atomico полностью поддерживает TypeScript, что важно для крупных проектов:
.ts и
.tsx.@vitejs/plugin-vue (аналогично для Atomico) или настройка
esbuild.ts-loader или
babel-loader с поддержкой TypeScript.// Пример для Webpack
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
],
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx'],
}
Эти настройки обеспечивают корректную компиляцию и интеграцию Atomico с типизированными проектами.
Правильная конфигурация сборщиков является фундаментом стабильной и производительной работы с Atomico. Использование Vite, Webpack или Rollup позволяет гибко настраивать сборку, оптимизировать производительность и интегрировать современные возможности JavaScript и TypeScript. Эффективная работа с внешними зависимостями, минимизация и разделение кода создают быстрые и модульные веб-компоненты, готовые к использованию в любых веб-приложениях.