Svelte-это относительно новая, пылающая быстрая библиотека пользовательского интерфейса. Как и некоторые другие интерфейсные библиотеки (например, React), Svelte Code не может быть немедленно интерпретирован и выполнен браузером. Вместо этого вы должны добавить Построить шаг Это займет ваш стройный код и превратит его в HTML, CSS и JavaScript, которые понимают браузеры.
В сообщении будут изучены основы того, как создать стройные приложения для разработки и производства, используя RULLUP Анкет
Давайте создадим супер Простое приложение для начинания. Во -первых, мы создадим наш каталог приложений, который мы позвоним My-Svelte-App :
mkdir my-svelte-app
Затем давайте перейдем к этому каталогу и инициализируем новый проект NPM. Мы будем использовать -y Флаг для использования настройки по умолчанию.
cd my-svelte-app npm init -y
Отлично, теперь у нас есть базовый Package.json файл. Конечно, это стройные проекты, поэтому первое, что мы захотим сделать, это установить СВЕЛТА как зависимость развития.
npm i svelte
По соглашению мы напишем код нашего приложения в SRC каталог. Мы создадим этот каталог, App.svelte Файл для нашего кода компонента и main.js Файл, который создаст наше приложение и скажет ему, где быть вставлено в DOM.
mkdir src touch src/App.svelte src/main.js
В нашем App.svelte Файл, у нас просто будет абзац, который выводит «Привет [имя]», где это имя является опорой.
App.svelte
Hello {name}
Далее мы настроим main.js Анкет Здесь мы создаем новый экземпляр нашего Приложение , планируйте загрузить наше приложение в тело документа ( Document.Body ), и мы предоставим имя из "Нарцид" к нашему компоненту.
main.js
import App from './App.svelte';
const app = new App({
target: document.body,
props: {
name: 'Daffodil',
},
});
export default app;
Идеальный! Мы закончили установить наше наше приложение Svelte, но у нас нет возможности запустить его в режиме разработки или производства; Сейчас это просто куча стройного кода.
Как я уже говорил, мы доберемся до RULLUP Чтобы преобразовать наш стройный код в браузер, читаемый HTML, CSS и JavaScript.
Рулон – это Модуль Бундлер Для JavaScript Applications. Он принимает модульный код, например, наше стройное приложение, и объединяет его в файлы, которые браузеры могут легко разобрать и отображать пользователям. Это означает преобразование таких вещей, как наш .svelte Файл и его различные импорты, реквизиты и т. Д. В файлы HTML, CSS и JavaScript. WebPack – еще один такой модульный пакет, который также может использоваться для стройных проектов. Сегодня, однако, мы сосредоточены на ROLLUP.
Начало работы с RULLUP
Одна вещь, которую вы можете заметить, когда клонируете шаблон стройного (или шаблон из другой библиотеки пользовательского интерфейса, такой как React), это то, что файлы конфигурации модуля Bundler кажутся сложными и неприступными. Правда в том, что там это Многое, что входит в эти файлы, но если мы создаем их с нуля и постепенно добавляем функции, мы можем увидеть, что все это имеет смысл и очень выполнимо.
При этом, давайте испастят руки! Первое, что мы сделаем, это добавить RULLUP как Развитие Зависимость для нашего проекта.
npm i -D rollup
Далее нам нужно добавить две дополнительные зависимости развития развития:
@Rollup/Plagin-Node-Resolve, который используется для того, чтобы помочь Rollup Resolution сторонней плагиныRollup-Plugin-SvelteСторонний плагин, который помогает Rollup понимать, как обрабатывать стройные приложения
npm i -D @rollup/plugin-node-resolve rollup-plugin-svelte
Имейте в виду, что мы используем -Д Флаг, чтобы установить их в качестве зависимостей для разработки. В конце концов, мы используем только Rollup в разработке; К тому времени, когда мы находимся в производстве, наше приложение было встроено в HTML, CSS и JavaScript.
Создание файла конфигурации Rollup
Давайте создадим очень простой файл конфигурации ROLLUP. На данный момент все это сделает, это объединить наше приложение для JavaScript в Public/Build папка.
touch rollup.config.js
В этом файле наш экспорт по умолчанию будет объектом конфигурации Rollup.
Rollup.config.js
import svelte from 'rollup-plugin-svelte';
import resolve from '@rollup/plugin-node-resolve';
export default {
// This `main.js` file we wrote
input: 'src/main.js',
output: {
// The destination for our bundled JavaScript
file: 'public/build/bundle.js',
// Our bundle will be an Immediately-Invoked Function Expression
format: 'iife',
// The IIFE return value will be assigned into a variable called `app`
name: 'app',
},
plugins: [
svelte({
// Tell the svelte plugin where our svelte files are located
include: 'src/**/*.svelte',
}),
// Tell any third-party plugins that we're building for the browser
resolve({ browser: true }),
],
};
Надеюсь, это не слишком много сразу! Вход Field сообщает Rollup, где основная точка входа в приложение, вывод Поле указывает информацию о комплексном результате и плагины Подача сообщает Rollup, как обработать приложение ввода.
Добавление обзора в наши сценарии NPM
Последнее, что нам нужно сделать, прежде чем мы возьмем наше приложение для тестового диска, – это сделать его, чтобы мы могли (а) запустить рулон с помощью скрипта NPM и (b) обслуживать контент, добавленный к public папка.
Запуск рулона со сценарием NPM
Чтобы запустить ROLLUP с помощью скрипта NPM, давайте добавим новый сценарий в нашем Package.json файл:
package.json
/* other package.json content here */
{
"scripts": {
"dev": "rollup -c -w"
}
}
/* other package.json content here */
-c Флаг указывает, что мы хотим, чтобы запустить, чтобы использовать файл конфигурации. Поскольку мы не предоставляем местоположение файла, Rollup предполагает, что мы следовали соглашению, которое мы сделали, когда назвали наш файл конфигурации Rollup.config.js Анкет -W флаг супер удобен, потому что он говорит об рулоне смотреть Наши включенные файлы приложений для изменений. Когда произойдут какие -либо изменения, Rollup поможет восстановить наше приложение в public/build/bundle.js Анкет
Теперь, если мы перейдем к командной строке и запустим NPM запустить Dev , мы должны увидеть, что Rollup объединила наше приложение в новое public/build/bunde.js файл. Успех!
Обслуживание контента
У нас есть наш комплексный JavaScript, но браузер не узнает, что с этим делать без файла HTML. Поэтому давайте добавим index.html файл в наш public папка:
touch public/index.html
Внутри это index.html Файл, давайте создадим HTML -файл, в котором нет ничего в теле. Однако мы хотим убедиться, что добавим сценарий Тег, который загружает наш патронный javaScript из /build/bundle.js .
index.html
My Svelte App
Теперь нам нужен простой веб -сервер для обслуживания нашего index.html файл. Мы будем использовать популярный пакет NPM под названием sirv-cli сделать это. Поскольку это только для разработки, мы снова будем добавлять sirv-cli как зависимость от разработки.
npm i -D sirv-cli
Теперь давайте добавим сценарий NPM для обслуживания нашего приложения. Мы поместим это под старт сценарий
/* other package.json content here */
{
"scripts": {
"dev": "rollup -c -w",
"start": "sirv public"
}
}
/* other package.json content here */
Теперь мы должны наконец иметь возможность создавать и начать наше приложение! На данный момент мы сделаем это сначала запустив Dev сценарий, а затем старт сценарий
npm run dev && npm run start
Теперь вы должны иметь возможность перейти к http://localhost: 5000 И посмотрите свое приложение Svelte во всей его славе!
Теперь, если мы изменим имя Опора в нашем src/main.js Файл в "Ник" (или ваше собственное имя), Rollup поможет восстановить наше приложение. Обратите внимание, что наше приложение не освежается, нам придется продолжить и обновить http://localhost: 5000 Чтобы увидеть изменения.
Это основы
Поздравляю, это основы для использования Rollup для создания и обслуживания вашего стройного приложения! Это был хороший кусок информации, поэтому имеет смысл, если вы хотите остановиться на этом. Тем не менее, есть некоторые улучшения и улучшения, которые мы можем сделать! Если у вас все еще есть аппетит, поднимитесь со мной, чтобы сделать наш процесс разработки более надежным.
Есть довольно много улучшений, которые мы можем сделать в нашем проекте. Мы справимся с двумя основными улучшениями в этом посте: запустить для нас DEV -сервер и добавить горячую перезагрузку в проект.
Большая часть работы здесь получена из измеченного шаблона стартового стартера Здесь Анкет Большое спасибо за сопровождающие этого репо!
Запустить запустить сервер
Бег npm запустить dev && npm запустить начало это немного боль, мы должны только бежать npm запустить dev Чтобы заставить наш сервер разработчиков. Поэтому давайте использовать гибкость плагинов ROLLUP для создания наших собственных служить плагин.
Наш обычай служить плагин можно добавить в верхнюю часть нашего Rollup.config.js файл. Ему нужно экспортировать объект с writebundle Ключ, который является функцией. Тогда мы можем позвонить нашему служить функция в нашем плагины множество.
Rollup.config.json
import svelte from 'rollup-plugin-svelte';
import resolve from '@rollup/plugin-node-resolve';
function serve() {
return {
writeBundle() {},
};
}
export default {
input: 'src/main.js',
output: {
file: 'public/build/bundle.js',
format: 'iife',
name: 'app',
},
plugins: [
svelte({
include: 'src/**/*.svelte',
}),
resolve({ browser: true }),
serve(),
],
};
Давайте заполним служить функция Ниже приведена завершенная версия функции с некоторыми встроенными заметками. Обратите внимание, что этот пост в блоге не будет вдаваться в подробности о порождает дочерний процесс в узле так как это немного не в масштабах!
function serve() {
// Keep a reference to a spawned server process
let server;
function toExit() {
// kill the server if it exists
if (server) server.kill(0);
}
return {
writeBundle() {
if (server) return;
// Spawn a child server process
server = require('child_process').spawn(
'npm',
['run', 'start', '--', '--dev'],
{
stdio: ['ignore', 'inherit', 'inherit'],
shell: true,
}
);
// Kill server on process termination or exit
process.on('SIGTERM', toExit);
process.on('exit', toExit);
},
};
}
Теперь мы можем пойти дальше и бежать npm запустить dev В нашем терминале, и мы увидим, что наш Сирв Сервер запускается для нас! Мы можем перейти к http://localhost:5000 И мы будем работать.
Добавление горячей перезагрузки
Вы, вероятно, заметили ранее об этом, когда мы внесли изменения в наше стройное приложение, ROLLUP восстановит наш пакет, но нам пришлось обновить браузер, чтобы увидеть изменения. На самом деле есть довольно простой способ сделать это без необходимости обновлять вручную – есть пакет для него под названием Rollup-Plugin-Livereload !
npm i -D rollup-plugin-livereload
Затем мы просто добавляем его в наш массив плагинов Rollup Config. Требуется аргумент строки, указывающий, какую папку следует наблюдать за перезагрузкой в прямом эфире. В этом случае мы хотим посмотреть что -либо в public Анкет
Rollup.config.js
import svelte from 'rollup-plugin-svelte';
import resolve from '@rollup/plugin-node-resolve';
import livereload from 'rollup-plugin-livereload';
function serve() {
// Keep a reference to a spawned server process
let server;
function toExit() {
// kill the server if it exists
if (server) server.kill(0);
}
return {
writeBundle() {
if (server) return;
// Spawn a child server process
server = require('child_process').spawn(
'npm',
['run', 'start', '--', '--dev'],
{
stdio: ['ignore', 'inherit', 'inherit'],
shell: true,
}
);
// Kill server on process termination or exit
process.on('SIGTERM', toExit);
process.on('exit', toExit);
},
};
}
export default {
input: 'src/main.js',
output: {
file: 'public/build/bundle.js',
format: 'iife',
name: 'app',
},
plugins: [
svelte({
include: 'src/**/*.svelte',
}),
resolve({ browser: true }),
serve(),
livereload('public'),
],
};
Теперь, если мы начнем наше приложение с NPM запустить Dev Мы видим, что наш сервер будет горячей загрузкой приложения всякий раз, когда мы вносим изменения в наши слабые файлы. Аккуратный!
Вы можете настроить гораздо больше (поддержка CSS/препроцессор, различные различия конфигурации в производстве по сравнению с разработкой, широкая экосистема очень крутых плагинов ), Так что, надеюсь, этот пост помог вам опустить ноги и на самом деле понять процесс стрте/обмолота, чтобы продолжать настраивать его в желание вашего сердца!
Оригинал: “https://dev.to/nas5w/how-to-set-up-a-svelte-app-with-rollup-3alf”