Задайте вопрос и получите краткое содержание документа через любого ИИ-провайдера на этой странице
История версий
- "Перенесено из документации Intlayer CMS в отдельную страницу"v9.0.008.07.2026
- "Добавлена документация по live sync"v6.0.122.09.2025
- "Заменено поле `hotReload` на `liveSync`"v6.0.004.09.2025
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Живая синхронизация
Живая синхронизация позволяет вашему приложению отражать изменения контента CMS в режиме реального времени. Пересборка или повторный деплой не требуются. Когда функция включена, обновления передаются на сервер живой синхронизации, который обновляет словари, используемые вашим приложением.
Содержание
Включение Live Sync
Включите живую синхронизацию, обновив конфигурацию Intlayer:
Копировать код в буфер обмена
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
// ... другие настройки конфигурации
editor: {
/**
* Включает горячую перезагрузку конфигураций локалей при обнаружении изменений.
* Например, когда словарь добавляется или обновляется, приложение обновляет
* отображаемый на странице контент.
*
* Поскольку горячая перезагрузка требует постоянного подключения к серверу,
* она доступна только для клиентов с тарифным планом `enterprise`.
*
* По умолчанию: false
*/
liveSync: true,
},
dictionary: {
/**
* Управляет способом импорта словарей:
*
* - "fetch": словари загружаются динамически с использованием Live Sync API.
* Заменяет useIntlayer на useDictionaryDynamic.
*
* Примечание: Режим "fetch" использует Live Sync API для загрузки словарей. Если вызов API
* не удаётся, словари импортируются динамически.
* Примечание: Только словари с удалённым содержимым и флагом "live" используют режим "fetch".
* Остальные используют динамический режим для повышения производительности.
*/
importMode: "fetch",
},
};
export default config;Запустите сервер Live Sync, чтобы обернуть ваше приложение:
Пример использования автономного сервера:
Копировать код в буфер обмена
{ "scripts": { // ... other scripts "live:start": "npx intlayer live", },}Вы также можете использовать сервер вашего приложения параллельно, используя аргумент --process.
Пример с использованием Next.js:
Копировать код в буфер обмена
{ "scripts": { // ... другие скрипты "build": "next build", "dev": "next dev", "start": "npx intlayer live --with 'next start'", },}Пример с использованием Vite:
Копировать код в буфер обмена
{ "scripts": { // ... другие скрипты "build": "vite build", "dev": "vite dev", "start": "npx intlayer live --with 'vite start'", },}Сервер Live Sync оборачивает ваше приложение и автоматически применяет обновлённый контент по мере его поступления.
Чтобы получать уведомления об изменениях из CMS, сервер Live Sync поддерживает SSE-соединение с бэкендом. Когда контент в CMS изменяется, бэкенд пересылает обновление серверу Live Sync, который записывает новые словари. Ваше приложение отобразит обновление при следующей навигации или перезагрузке браузера, пересборка не требуется.
Блок-схема (CMS/Backend -> Live Sync Server -> Application Server -> Frontend):
Как это работает:
Рабочий процесс разработки (локально)
- В процессе разработки все удалённые словари загружаются при запуске приложения, чтобы вы могли быстро тестировать обновления.
- Чтобы протестировать Live Sync локально с Next.js, оберните ваш dev-сервер:
Копировать код в буфер обмена
{ "scripts": { // ... другие скрипты "dev": "npx intlayer live --with 'next dev'", // "dev": "npx intlayer live --with 'vite dev'", // Для Vite },}Включите оптимизацию, чтобы Intlayer применял трансформации Live импорта во время разработки:
Копировать код в буфер обмена
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
editor: {
applicationURL: "http://localhost:5173",
liveSyncURL: "http://localhost:4000",
liveSync: true,
},
dictionary: {
importMode: "fetch",
},
build: {
optimize: true, // default: process.env.NODE_ENV === 'production'
},
};
export default config;Эта настройка оборачивает ваш dev-сервер сервером Live Sync, загружает удалённые словари при запуске и транслирует обновления из CMS через SSE. Обновите страницу, чтобы увидеть изменения.
Примечания и ограничения
- Добавьте источник live sync в политику безопасности вашего сайта (CSP). Убедитесь, что URL live sync разрешён в
connect-src(и вframe-ancestors, если это актуально). - Live Sync не работает со статическим выводом. Для Next.js страница должна быть динамической, чтобы получать обновления во время выполнения (например, используйте
generateStaticParams,generateMetadata,getServerSidePropsилиgetStaticPropsсоответствующим образом, чтобы избежать ограничений полностью статического вывода). - В CMS у каждого словаря есть флаг
live. Только словари сlive=trueзагружаются через API live sync; остальные импортируются динамически и остаются неизменными во время выполнения. - Флаг
liveоценивается для каждого словаря во время сборки. Если удалённый контент не был помечен какlive=trueво время сборки, необходимо выполнить повторную сборку, чтобы включить Live Sync для этого словаря. - Сервер live sync должен иметь возможность записывать в
.intlayer. В контейнерах убедитесь, что есть права на запись в/.intlayer.