@intlayer/docs 7.5.12 → 7.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/ar/per-component_vs_centralized_i18n.md +248 -0
- package/blog/de/per-component_vs_centralized_i18n.md +248 -0
- package/blog/en/_per-component_vs_centralized_i18n.md +252 -0
- package/blog/en/per-component_vs_centralized_i18n.md +248 -0
- package/blog/en-GB/per-component_vs_centralized_i18n.md +247 -0
- package/blog/es/per-component_vs_centralized_i18n.md +245 -0
- package/blog/fr/per-component_vs_centralized_i18n.md +245 -0
- package/blog/hi/per-component_vs_centralized_i18n.md +249 -0
- package/blog/id/per-component_vs_centralized_i18n.md +248 -0
- package/blog/it/per-component_vs_centralized_i18n.md +247 -0
- package/blog/ja/per-component_vs_centralized_i18n.md +247 -0
- package/blog/ko/per-component_vs_centralized_i18n.md +246 -0
- package/blog/pl/per-component_vs_centralized_i18n.md +247 -0
- package/blog/pt/per-component_vs_centralized_i18n.md +246 -0
- package/blog/ru/per-component_vs_centralized_i18n.md +251 -0
- package/blog/tr/per-component_vs_centralized_i18n.md +244 -0
- package/blog/uk/compiler_vs_declarative_i18n.md +224 -0
- package/blog/uk/i18n_using_next-i18next.md +1086 -0
- package/blog/uk/i18n_using_next-intl.md +760 -0
- package/blog/uk/index.md +69 -0
- package/blog/uk/internationalization_and_SEO.md +273 -0
- package/blog/uk/intlayer_with_i18next.md +211 -0
- package/blog/uk/intlayer_with_next-i18next.md +202 -0
- package/blog/uk/intlayer_with_next-intl.md +203 -0
- package/blog/uk/intlayer_with_react-i18next.md +200 -0
- package/blog/uk/intlayer_with_react-intl.md +202 -0
- package/blog/uk/intlayer_with_vue-i18n.md +206 -0
- package/blog/uk/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/uk/l10n_platform_alternative/crowdin.md +80 -0
- package/blog/uk/l10n_platform_alternative/phrase.md +78 -0
- package/blog/uk/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/uk/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/uk/list_i18n_technologies/CMS/wordpress.md +189 -0
- package/blog/uk/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/uk/list_i18n_technologies/frameworks/flutter.md +128 -0
- package/blog/uk/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/uk/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/uk/list_i18n_technologies/frameworks/svelte.md +145 -0
- package/blog/uk/list_i18n_technologies/frameworks/vue.md +144 -0
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1499 -0
- package/blog/uk/nextjs-multilingual-seo-comparison.md +360 -0
- package/blog/uk/per-component_vs_centralized_i18n.md +248 -0
- package/blog/uk/rag_powered_documentation_assistant.md +288 -0
- package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
- package/blog/uk/vue-i18n_vs_intlayer.md +279 -0
- package/blog/uk/what_is_internationalization.md +167 -0
- package/blog/vi/per-component_vs_centralized_i18n.md +246 -0
- package/blog/zh/per-component_vs_centralized_i18n.md +248 -0
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +20 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +20 -0
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +20 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +20 -0
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/docs/ar/configuration.md +6 -1
- package/docs/ar/dictionary/content_file.md +6 -1
- package/docs/de/configuration.md +6 -1
- package/docs/de/dictionary/content_file.md +6 -1
- package/docs/en/configuration.md +6 -1
- package/docs/en/dictionary/content_file.md +6 -1
- package/docs/en-GB/configuration.md +6 -1
- package/docs/en-GB/dictionary/content_file.md +3 -1
- package/docs/es/configuration.md +6 -1
- package/docs/es/dictionary/content_file.md +6 -1
- package/docs/fr/configuration.md +6 -1
- package/docs/fr/dictionary/content_file.md +3 -1
- package/docs/hi/configuration.md +6 -1
- package/docs/hi/dictionary/content_file.md +3 -1
- package/docs/id/configuration.md +6 -1
- package/docs/id/dictionary/content_file.md +3 -1
- package/docs/it/configuration.md +6 -1
- package/docs/it/dictionary/content_file.md +3 -1
- package/docs/ja/configuration.md +6 -1
- package/docs/ja/dictionary/content_file.md +3 -1
- package/docs/ko/configuration.md +6 -1
- package/docs/ko/dictionary/content_file.md +3 -1
- package/docs/pl/configuration.md +3 -1
- package/docs/pl/dictionary/content_file.md +3 -1
- package/docs/pt/configuration.md +6 -1
- package/docs/pt/dictionary/content_file.md +3 -1
- package/docs/ru/configuration.md +6 -1
- package/docs/ru/dictionary/content_file.md +6 -1
- package/docs/tr/configuration.md +6 -1
- package/docs/tr/dictionary/content_file.md +3 -1
- package/docs/uk/CI_CD.md +198 -0
- package/docs/uk/autoFill.md +307 -0
- package/docs/uk/bundle_optimization.md +185 -0
- package/docs/uk/cli/build.md +64 -0
- package/docs/uk/cli/ci.md +137 -0
- package/docs/uk/cli/configuration.md +63 -0
- package/docs/uk/cli/debug.md +46 -0
- package/docs/uk/cli/doc-review.md +43 -0
- package/docs/uk/cli/doc-translate.md +132 -0
- package/docs/uk/cli/editor.md +28 -0
- package/docs/uk/cli/fill.md +130 -0
- package/docs/uk/cli/index.md +190 -0
- package/docs/uk/cli/init.md +84 -0
- package/docs/uk/cli/list.md +90 -0
- package/docs/uk/cli/list_projects.md +128 -0
- package/docs/uk/cli/live.md +41 -0
- package/docs/uk/cli/login.md +157 -0
- package/docs/uk/cli/pull.md +78 -0
- package/docs/uk/cli/push.md +98 -0
- package/docs/uk/cli/sdk.md +71 -0
- package/docs/uk/cli/test.md +76 -0
- package/docs/uk/cli/transform.md +65 -0
- package/docs/uk/cli/version.md +24 -0
- package/docs/uk/cli/watch.md +37 -0
- package/docs/uk/configuration.md +742 -0
- package/docs/uk/dictionary/condition.md +237 -0
- package/docs/uk/dictionary/content_file.md +1134 -0
- package/docs/uk/dictionary/enumeration.md +245 -0
- package/docs/uk/dictionary/file.md +232 -0
- package/docs/uk/dictionary/function_fetching.md +212 -0
- package/docs/uk/dictionary/gender.md +273 -0
- package/docs/uk/dictionary/insertion.md +187 -0
- package/docs/uk/dictionary/markdown.md +383 -0
- package/docs/uk/dictionary/nesting.md +273 -0
- package/docs/uk/dictionary/translation.md +332 -0
- package/docs/uk/formatters.md +595 -0
- package/docs/uk/how_works_intlayer.md +256 -0
- package/docs/uk/index.md +175 -0
- package/docs/uk/interest_of_intlayer.md +297 -0
- package/docs/uk/intlayer_CMS.md +569 -0
- package/docs/uk/intlayer_visual_editor.md +292 -0
- package/docs/uk/intlayer_with_angular.md +710 -0
- package/docs/uk/intlayer_with_astro.md +256 -0
- package/docs/uk/intlayer_with_create_react_app.md +1258 -0
- package/docs/uk/intlayer_with_express.md +429 -0
- package/docs/uk/intlayer_with_fastify.md +446 -0
- package/docs/uk/intlayer_with_lynx+react.md +548 -0
- package/docs/uk/intlayer_with_nestjs.md +283 -0
- package/docs/uk/intlayer_with_next-i18next.md +640 -0
- package/docs/uk/intlayer_with_next-intl.md +456 -0
- package/docs/uk/intlayer_with_nextjs_page_router.md +1541 -0
- package/docs/uk/intlayer_with_nuxt.md +711 -0
- package/docs/uk/intlayer_with_react_router_v7.md +600 -0
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +669 -0
- package/docs/uk/intlayer_with_svelte_kit.md +579 -0
- package/docs/uk/intlayer_with_tanstack.md +818 -0
- package/docs/uk/intlayer_with_vite+preact.md +1748 -0
- package/docs/uk/intlayer_with_vite+react.md +1449 -0
- package/docs/uk/intlayer_with_vite+solid.md +302 -0
- package/docs/uk/intlayer_with_vite+svelte.md +520 -0
- package/docs/uk/intlayer_with_vite+vue.md +1113 -0
- package/docs/uk/introduction.md +222 -0
- package/docs/uk/locale_mapper.md +242 -0
- package/docs/uk/mcp_server.md +211 -0
- package/docs/uk/packages/express-intlayer/t.md +465 -0
- package/docs/uk/packages/intlayer/getEnumeration.md +159 -0
- package/docs/uk/packages/intlayer/getHTMLTextDir.md +121 -0
- package/docs/uk/packages/intlayer/getLocaleLang.md +81 -0
- package/docs/uk/packages/intlayer/getLocaleName.md +135 -0
- package/docs/uk/packages/intlayer/getLocalizedUrl.md +338 -0
- package/docs/uk/packages/intlayer/getMultilingualUrls.md +359 -0
- package/docs/uk/packages/intlayer/getPathWithoutLocale.md +75 -0
- package/docs/uk/packages/intlayer/getPrefix.md +213 -0
- package/docs/uk/packages/intlayer/getTranslation.md +190 -0
- package/docs/uk/packages/intlayer/getTranslationContent.md +189 -0
- package/docs/uk/packages/next-intlayer/t.md +365 -0
- package/docs/uk/packages/next-intlayer/useDictionary.md +276 -0
- package/docs/uk/packages/next-intlayer/useIntlayer.md +263 -0
- package/docs/uk/packages/next-intlayer/useLocale.md +166 -0
- package/docs/uk/packages/react-intlayer/t.md +311 -0
- package/docs/uk/packages/react-intlayer/useDictionary.md +295 -0
- package/docs/uk/packages/react-intlayer/useI18n.md +250 -0
- package/docs/uk/packages/react-intlayer/useIntlayer.md +251 -0
- package/docs/uk/packages/react-intlayer/useLocale.md +210 -0
- package/docs/uk/per_locale_file.md +345 -0
- package/docs/uk/plugins/sync-json.md +398 -0
- package/docs/uk/readme.md +265 -0
- package/docs/uk/releases/v6.md +305 -0
- package/docs/uk/releases/v7.md +624 -0
- package/docs/uk/roadmap.md +346 -0
- package/docs/uk/testing.md +204 -0
- package/docs/vi/configuration.md +6 -1
- package/docs/vi/dictionary/content_file.md +6 -1
- package/docs/zh/configuration.md +6 -1
- package/docs/zh/dictionary/content_file.md +6 -1
- package/frequent_questions/ar/error-vite-env-only.md +77 -0
- package/frequent_questions/de/error-vite-env-only.md +77 -0
- package/frequent_questions/en/error-vite-env-only.md +77 -0
- package/frequent_questions/en-GB/error-vite-env-only.md +77 -0
- package/frequent_questions/es/error-vite-env-only.md +76 -0
- package/frequent_questions/fr/error-vite-env-only.md +77 -0
- package/frequent_questions/hi/error-vite-env-only.md +77 -0
- package/frequent_questions/id/error-vite-env-only.md +77 -0
- package/frequent_questions/it/error-vite-env-only.md +77 -0
- package/frequent_questions/ja/error-vite-env-only.md +77 -0
- package/frequent_questions/ko/error-vite-env-only.md +77 -0
- package/frequent_questions/pl/error-vite-env-only.md +77 -0
- package/frequent_questions/pt/error-vite-env-only.md +77 -0
- package/frequent_questions/ru/error-vite-env-only.md +77 -0
- package/frequent_questions/tr/error-vite-env-only.md +77 -0
- package/frequent_questions/uk/SSR_Next_no_[locale].md +104 -0
- package/frequent_questions/uk/array_as_content_declaration.md +72 -0
- package/frequent_questions/uk/build_dictionaries.md +58 -0
- package/frequent_questions/uk/build_error_CI_CD.md +74 -0
- package/frequent_questions/uk/bun_set_up.md +53 -0
- package/frequent_questions/uk/customized_locale_list.md +64 -0
- package/frequent_questions/uk/domain_routing.md +113 -0
- package/frequent_questions/uk/error-vite-env-only.md +77 -0
- package/frequent_questions/uk/esbuild_error.md +29 -0
- package/frequent_questions/uk/get_locale_cookie.md +142 -0
- package/frequent_questions/uk/intlayer_command_undefined.md +155 -0
- package/frequent_questions/uk/locale_incorect_in_url.md +73 -0
- package/frequent_questions/uk/package_version_error.md +181 -0
- package/frequent_questions/uk/static_rendering.md +44 -0
- package/frequent_questions/uk/translated_path_url.md +55 -0
- package/frequent_questions/uk/unknown_command.md +97 -0
- package/frequent_questions/vi/error-vite-env-only.md +77 -0
- package/frequent_questions/zh/error-vite-env-only.md +77 -0
- package/legal/uk/privacy_notice.md +83 -0
- package/legal/uk/terms_of_service.md +55 -0
- package/package.json +9 -9
- package/src/generated/blog.entry.ts +20 -0
- package/src/generated/frequentQuestions.entry.ts +20 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-03-13
|
|
3
|
+
updatedAt: 2025-09-20
|
|
4
|
+
title: Автозаповнення
|
|
5
|
+
description: Дізнайтеся, як використовувати функцію автозаповнення в Intlayer для автоматичного заповнення контенту на основі заздалегідь визначених шаблонів. Дотримуйтесь цієї документації, щоб ефективно реалізувати можливості автозаповнення у вашому проєкті.
|
|
6
|
+
keywords:
|
|
7
|
+
- Автозаповнення
|
|
8
|
+
- Автоматизація контенту
|
|
9
|
+
- Динамічний контент
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Next.js
|
|
12
|
+
- JavaScript
|
|
13
|
+
- React
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- concept
|
|
17
|
+
- auto-fill
|
|
18
|
+
history:
|
|
19
|
+
- version: 7.0.0
|
|
20
|
+
date: 2025-10-23
|
|
21
|
+
changes: Перейменовано `autoFill` на `fill` та оновлено поведінку
|
|
22
|
+
- version: 6.0.0
|
|
23
|
+
date: 2025-09-20
|
|
24
|
+
changes: Додано глобальну конфігурацію
|
|
25
|
+
- version: 6.0.0
|
|
26
|
+
date: 2025-09-17
|
|
27
|
+
changes: Додано змінну `{{fileName}}`
|
|
28
|
+
- version: 5.5.10
|
|
29
|
+
date: 2025-06-29
|
|
30
|
+
changes: Ініціалізовано історію
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
# Заповнення файлів декларації контенту
|
|
34
|
+
|
|
35
|
+
**Файли декларації контенту з автозаповненням** у вашому CI — це спосіб прискорити робочий процес розробки.
|
|
36
|
+
|
|
37
|
+
## Розуміння поведінки
|
|
38
|
+
|
|
39
|
+
Команда `fill` має два режими:
|
|
40
|
+
|
|
41
|
+
- **Complete**: Автоматично заповнює весь відсутній контент для кожної локалі та редагує поточний файл або інший файл, якщо вказано. Тобто режим Complete пропускає переклад наявного контенту, якщо він уже перекладений.
|
|
42
|
+
- **Review**: Автоматично заповнює **весь** контент для кожної локалі та генерує файл для поточного або вказаного іншого файлу.
|
|
43
|
+
|
|
44
|
+
Команда `fill` обробляє лише ваші локальні файли декларації контенту. Тобто вона не обробляє віддалений контент із CMS — CMS має власну систему керування перекладами.
|
|
45
|
+
Якщо ви використовуєте плагіни, такі як `@intlayer/sync-json-plugin`, Intlayer перетворить JSON-файли на файли декларацій локалізованого контенту. Тобто вони будуть оброблятися командою `fill`.
|
|
46
|
+
|
|
47
|
+
У новостворених файлах міститься інструкція `filled` як метадані словника. Ця інструкція використовується Intlayer, щоб визначити, чи файл був автозаповнений, і, якщо так, пропустити цей файл при наступному перекладі.
|
|
48
|
+
|
|
49
|
+
Intlayer також враховуватиме такі інструкції для автозаповнення:
|
|
50
|
+
|
|
51
|
+
- Із вашого файлу `.content.{ts|js|json}` → інструкція `fill`
|
|
52
|
+
- Із конфігураційного файлу `.intlayer.config.ts` → інструкція `dictionary.fill`
|
|
53
|
+
- Якщо ніде не вказано — за замовчуванням буде встановлено `true`
|
|
54
|
+
|
|
55
|
+
Для деклараційних файлів вмісту, що призначені для окремої локалі (per-locale), інструкція `true` буде замінена на `./{{fileName}}.fill.content.json`. Це відбувається тому, що такий per-locale деклараційний файл вмісту не може отримувати додатковий локалізований вміст. Отже, буде згенеровано новий файл, щоб не перезаписувати існуючий файл.
|
|
56
|
+
|
|
57
|
+
## Поведінка за замовчуванням
|
|
58
|
+
|
|
59
|
+
За замовчуванням глобальний параметр `fill` встановлено в `true`, що означає, що Intlayer автоматично заповнюватиме всі файли вмісту та редагуватиме сам файл. Цю поведінку можна налаштувати кількома способами:
|
|
60
|
+
|
|
61
|
+
### Глобальні параметри конфігурації
|
|
62
|
+
|
|
63
|
+
1. **`fill: true` (default)** - Автоматично заповнювати всі локалі та редагувати поточний файл
|
|
64
|
+
2. **`fill: false`** - Вимкнути автоматичне заповнення для цього файлу вмісту
|
|
65
|
+
3. **`fill: "./relative/path/to/file"`** - Створює/оновлює вказаний файл без редагування поточного, вказуючи на відносний шлях, який резольвується на основі розташування поточного файлу
|
|
66
|
+
4. **`fill: "/absolute/path/to/file"`** - Створює/оновлює вказаний файл без редагування поточного, вказуючи шлях, що резольвується відносно базового каталогу (поле `baseDir` у файлі конфігурації `.intlayer.config.ts`)
|
|
67
|
+
5. **`fill: "C:\\absolute\path\to\file"`** - Створює/оновлює вказаний файл без редагування поточного, вказуючи на абсолютний шлях, який резольвується на основі вашої операційної системи
|
|
68
|
+
6. **`fill: { [key in Locales]?: string }`** - Створює/оновлює вказаний файл для кожної локалі
|
|
69
|
+
|
|
70
|
+
### Зміни поведінки у v7
|
|
71
|
+
|
|
72
|
+
У версії v7 поведінка команди `fill` була оновлена:
|
|
73
|
+
|
|
74
|
+
- **`fill: true`** - Перезаписує поточний файл із заповненим вмістом для всіх локалей
|
|
75
|
+
- **`fill: "path/to/file"`** - Заповнює вказаний файл, не змінюючи поточний файл
|
|
76
|
+
- **`fill: false`** - Повністю відключає автоматичне заповнення
|
|
77
|
+
|
|
78
|
+
При використанні опції шляху для запису в інший файл механізм fill працює через _master-slave_ зв'язок між файлами декларацій вмісту. Основний (master) файл є джерелом істини, і коли він оновлюється, Intlayer автоматично застосовує ці зміни до похідних (filled) файлів декларацій, вказаних у шляху.
|
|
79
|
+
|
|
80
|
+
### Налаштування для кожної локалі
|
|
81
|
+
|
|
82
|
+
Ви також можете налаштувати поведінку для кожної локалі, використовуючи об'єкт:
|
|
83
|
+
|
|
84
|
+
```ts fileName="intlayer.config.ts"
|
|
85
|
+
const config: IntlayerConfig = {
|
|
86
|
+
content: {
|
|
87
|
+
internationalization: {
|
|
88
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.POLISH],
|
|
89
|
+
defaultLocale: Locales.ENGLISH,
|
|
90
|
+
requiredLocales: [Locales.ENGLISH], // Рекомендовано, щоб уникнути помилки Property 'pl' is missing in type '{ en: string; xxx } on your t function if
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
dictionary: {
|
|
94
|
+
fill: {
|
|
95
|
+
en: true, // Заповнює та редагує поточний файл для англійської
|
|
96
|
+
fr: "./translations/fr.json", // Створює окремий файл для французької
|
|
97
|
+
es: false, // Вимикає заповнення для іспанської
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Це дозволяє мати різну поведінку заповнення для різних локалей у межах одного проєкту.
|
|
104
|
+
|
|
105
|
+
```ts fileName="src/components/example/example.content.ts"
|
|
106
|
+
import { Locales, type Dictionary } from "intlayer";
|
|
107
|
+
|
|
108
|
+
const exampleContent = {
|
|
109
|
+
key: "example",
|
|
110
|
+
locale: Locales.ENGLISH,
|
|
111
|
+
fill: "./example.content.json",
|
|
112
|
+
content: {
|
|
113
|
+
contentExample: "Це приклад вмісту",
|
|
114
|
+
},
|
|
115
|
+
} satisfies Dictionary;
|
|
116
|
+
|
|
117
|
+
export default exampleContent;
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Ось [файл декларації вмісту на рівні локалі](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/per_locale_file.md), який використовує інструкцію `fill`.
|
|
121
|
+
|
|
122
|
+
Потім, коли ви виконаєте наступну команду:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
npx intlayer fill --file 'src/components/example/example.content.ts'
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Intlayer автоматично згенерує похідний файл декларації за адресою `src/components/example/example.content.json`, заповнивши всі локалі, які ще не оголошені в основному файлі.
|
|
129
|
+
|
|
130
|
+
```json5 fileName="src/components/example/example.content.json"
|
|
131
|
+
{
|
|
132
|
+
"key": "example",
|
|
133
|
+
"content": {
|
|
134
|
+
"contentExample": {
|
|
135
|
+
"nodeType": "translation",
|
|
136
|
+
"translation": {
|
|
137
|
+
"uk": "Це приклад вмісту",
|
|
138
|
+
"fr": "Ceci est un exemple de contenu",
|
|
139
|
+
"es": "Este es un ejemplo de contenido",
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Після цього обидва файли декларацій будуть об'єднані в один словник, доступний за допомогою стандартного хука `useIntlayer("example")` (React) / composable (Vue).
|
|
147
|
+
|
|
148
|
+
## Глобальна конфігурація
|
|
149
|
+
|
|
150
|
+
Ви можете налаштувати глобальну конфігурацію автоматичного заповнення у файлі `intlayer.config.ts`.
|
|
151
|
+
|
|
152
|
+
```ts fileName="intlayer.config.ts"
|
|
153
|
+
import { type IntlayerConfig, Locales } from "intlayer";
|
|
154
|
+
|
|
155
|
+
const config: IntlayerConfig = {
|
|
156
|
+
internationalization: {
|
|
157
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
158
|
+
defaultLocale: Locales.ENGLISH,
|
|
159
|
+
requiredLocales: [Locales.ENGLISH, Locales.FRENCH],
|
|
160
|
+
},
|
|
161
|
+
dictionary: {
|
|
162
|
+
// Автоматично згенерувати відсутні переклади для всіх словників
|
|
163
|
+
fill: "./{{fileName}}Filled.content.ts",
|
|
164
|
+
//
|
|
165
|
+
// fill: "/messages/{{locale}}/{{key}}/{{fileName}}.content.json",
|
|
166
|
+
//
|
|
167
|
+
// fill: true, // автоматично згенерувати відсутні переклади для всіх словників, як при використанні "./{{fileName}}.content.json"
|
|
168
|
+
//
|
|
169
|
+
// fill: {
|
|
170
|
+
// en: "./{{fileName}}.en.content.json",
|
|
171
|
+
// fr: "./{{fileName}}.fr.content.json",
|
|
172
|
+
// es: "./{{fileName}}.es.content.json",
|
|
173
|
+
// },
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
export default config;
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Ви все ще можете тонко налаштувати для кожного словника, використовуючи поле `fill` у файлах контенту. Intlayer спочатку врахує конфігурацію для конкретного словника, а потім відкотиться до глобальної конфігурації.
|
|
181
|
+
|
|
182
|
+
## Формат автозаповнених файлів
|
|
183
|
+
|
|
184
|
+
Рекомендований формат для автозаповнених файлів декларацій — **JSON**, оскільки це допомагає уникнути обмежень форматування. Однак Intlayer також підтримує `.ts`, `.js`, `.mjs`, `.cjs` та інші формати.
|
|
185
|
+
|
|
186
|
+
```ts fileName="src/components/example/example.content.ts"
|
|
187
|
+
const exampleContent = {
|
|
188
|
+
key: "example",
|
|
189
|
+
fill: "./example.filled.content.ts",
|
|
190
|
+
content: {
|
|
191
|
+
// Ваш контент
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Це згенерує файл за шляхом:
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
src/components/example/example.filled.content.ts
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
> Генерація `.js`, `.ts` та схожих файлів працює таким чином:
|
|
203
|
+
>
|
|
204
|
+
> - Якщо файл вже існує, Intlayer розпарсить його, використовуючи AST (Abstract Syntax Tree), щоб знайти кожне поле та вставити будь-які відсутні переклади.
|
|
205
|
+
> - Якщо файл не існує, Intlayer згенерує його, використовуючи шаблон файлу декларації контенту за замовчуванням.
|
|
206
|
+
|
|
207
|
+
## Абсолютні шляхи
|
|
208
|
+
|
|
209
|
+
Поле `fill` також підтримує абсолютні шляхи.
|
|
210
|
+
|
|
211
|
+
```ts fileName="src/components/example/example.content.ts"
|
|
212
|
+
const exampleContent = {
|
|
213
|
+
key: "example",
|
|
214
|
+
fill: "/messages/example.content.json",
|
|
215
|
+
content: {
|
|
216
|
+
// Ваш контент
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Це згенерує файл за шляхом:
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
/messages/example.content.json
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Автогенерація файлів декларацій контенту для кожної локалі
|
|
228
|
+
|
|
229
|
+
Поле `fill` також підтримує генерацію **файлів декларацій контенту для кожної локалі**.
|
|
230
|
+
|
|
231
|
+
```ts fileName="src/components/example/example.content.ts"
|
|
232
|
+
const exampleContent = {
|
|
233
|
+
key: "example",
|
|
234
|
+
fill: {
|
|
235
|
+
fr: "./example.fr.content.json",
|
|
236
|
+
es: "./example.es.content.json",
|
|
237
|
+
},
|
|
238
|
+
content: {
|
|
239
|
+
// Ваш контент
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
Це згенерує два окремі файли:
|
|
245
|
+
|
|
246
|
+
- `src/components/example/example.fr.content.json`
|
|
247
|
+
- `src/components/example/example.es.content.json`
|
|
248
|
+
|
|
249
|
+
> У цьому випадку, якщо об'єкт не містить усіх локалей, Intlayer пропустить генерацію решти локалей.
|
|
250
|
+
|
|
251
|
+
## Фільтрація автозаповнення для певної локалі
|
|
252
|
+
|
|
253
|
+
Використання об'єкта у полі `fill` дозволяє застосовувати фільтри та генерувати лише файли для певних локалей.
|
|
254
|
+
|
|
255
|
+
```ts fileName="src/components/example/example.content.ts"
|
|
256
|
+
const exampleContent = {
|
|
257
|
+
key: "example",
|
|
258
|
+
fill: {
|
|
259
|
+
fr: "./example.fr.content.json",
|
|
260
|
+
},
|
|
261
|
+
content: {
|
|
262
|
+
// Ваш контент
|
|
263
|
+
},
|
|
264
|
+
};
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Це згенерує лише файл перекладу французькою.
|
|
268
|
+
|
|
269
|
+
## Змінні шляху
|
|
270
|
+
|
|
271
|
+
Ви можете використовувати змінні всередині шляху `fill`, щоб динамічно формувати цільові шляхи для згенерованих файлів.
|
|
272
|
+
|
|
273
|
+
**Доступні змінні:**
|
|
274
|
+
|
|
275
|
+
- `{{locale}}` – код локалі (наприклад `fr`, `es`)
|
|
276
|
+
- `{{fileName}}` – ім'я файлу (наприклад `index`)
|
|
277
|
+
- `{{key}}` – ключ словника (наприклад `example`)
|
|
278
|
+
|
|
279
|
+
```ts fileName="src/components/example/index.content.ts"
|
|
280
|
+
const exampleContent = {
|
|
281
|
+
key: "example",
|
|
282
|
+
fill: "/messages/{{locale}}/{{key}}.content.json",
|
|
283
|
+
content: {
|
|
284
|
+
// Ваш вміст
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Це згенерує:
|
|
290
|
+
|
|
291
|
+
- `/messages/fr/example.content.json`
|
|
292
|
+
- `/messages/es/example.content.json`
|
|
293
|
+
|
|
294
|
+
```ts fileName="src/components/example/index.content.ts"
|
|
295
|
+
const exampleContent = {
|
|
296
|
+
key: "example",
|
|
297
|
+
fill: "./{{fileName}}.content.json",
|
|
298
|
+
content: {
|
|
299
|
+
// Ваш вміст
|
|
300
|
+
},
|
|
301
|
+
};
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Це згенерує:
|
|
305
|
+
|
|
306
|
+
/// `./index.content.json`
|
|
307
|
+
/// `./index.content.json`
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-11-25
|
|
3
|
+
updatedAt: 2025-11-25
|
|
4
|
+
title: Оптимізація розміру бандла та продуктивності i18n
|
|
5
|
+
description: Зменшіть розмір бандла застосунку, оптимізуючи контент інтернаціоналізації (i18n). Дізнайтесь, як використовувати tree shaking та lazy loading для словників з Intlayer.
|
|
6
|
+
keywords:
|
|
7
|
+
- Оптимізація bundle
|
|
8
|
+
- Автоматизація контенту
|
|
9
|
+
- Динамічний контент
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Next.js
|
|
12
|
+
- JavaScript
|
|
13
|
+
- React
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- concept
|
|
17
|
+
- bundle-optimization
|
|
18
|
+
history:
|
|
19
|
+
- version: 6.0.0
|
|
20
|
+
date: 2025-11-25
|
|
21
|
+
changes: Init history
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Оптимізація розміру бандла та продуктивності i18n
|
|
25
|
+
|
|
26
|
+
Одна з найпоширеніших проблем традиційних i18n-рішень, що базуються на JSON-файлах — це керування розміром контенту. Якщо розробники не розділяють контент вручну по неймспейсах, користувачі часто в кінцевому підсумку завантажують переклади для всіх сторінок і, можливо, для всіх мов лише для перегляду однієї сторінки.
|
|
27
|
+
|
|
28
|
+
Наприклад, застосунок з 10 сторінками, перекладеними на 10 мов, може призвести до того, що користувач завантажує контент 100 сторінок, хоча йому потрібна лише **одна** (поточна сторінка поточною мовою). Це призводить до марної витрати трафіку та повільнішого завантаження.
|
|
29
|
+
|
|
30
|
+
> Щоб виявити це, ви можете використовувати аналізатор бандлу, такий як `rollup-plugin-visualizer` (vite), `@next/bundle-analyzer` (next.js) або `webpack-bundle-analyzer` (React CRA / Angular / тощо).
|
|
31
|
+
|
|
32
|
+
**Intlayer вирішує цю проблему через оптимізацію під час збірки.** Він аналізує ваш код, щоб визначити, які словники фактично використовуються для кожного компонента, і повторно вбудовує в бандл лише необхідний вміст.
|
|
33
|
+
|
|
34
|
+
## Зміст
|
|
35
|
+
|
|
36
|
+
<TOC />
|
|
37
|
+
|
|
38
|
+
## Як це працює
|
|
39
|
+
|
|
40
|
+
Intlayer використовує **підхід на рівні компонентів**. На відміну від глобальних JSON-файлів, ваш вміст визначається поруч із компонентами або всередині них. Під час процесу збірки Intlayer:
|
|
41
|
+
|
|
42
|
+
1. **Аналізує** ваш код, щоб знайти виклики `useIntlayer`.
|
|
43
|
+
2. **Формує** відповідний вміст словників.
|
|
44
|
+
3. **Замінює** виклик `useIntlayer` на оптимізований код відповідно до вашої конфігурації.
|
|
45
|
+
|
|
46
|
+
Це гарантує, що:
|
|
47
|
+
|
|
48
|
+
- Якщо компонент не імпортується, його вміст не включається до бандла (видалення мертвого коду — Dead Code Elimination).
|
|
49
|
+
- Якщо компонент завантажується lazy-loaded, його вміст також завантажується lazy-loaded.
|
|
50
|
+
|
|
51
|
+
## Налаштування за платформою
|
|
52
|
+
|
|
53
|
+
### Next.js
|
|
54
|
+
|
|
55
|
+
Next.js вимагає плагін `@intlayer/swc` для обробки трансформації, оскільки Next.js використовує SWC для збірок.
|
|
56
|
+
|
|
57
|
+
> Цей плагін встановлено за замовчуванням, оскільки SWC-плагіни досі експериментальні для Next.js. Це може змінитися в майбутньому.
|
|
58
|
+
|
|
59
|
+
### Vite
|
|
60
|
+
|
|
61
|
+
Vite використовує плагін `@intlayer/babel`, який включений як залежність `vite-intlayer`. Оптимізація увімкнена за замовчуванням.
|
|
62
|
+
|
|
63
|
+
### Webpack
|
|
64
|
+
|
|
65
|
+
Щоб увімкнути оптимізацію бандла з Intlayer на Webpack, потрібно встановити та налаштувати відповідний плагін Babel (`@intlayer/babel`) або SWC (`@intlayer/swc`).
|
|
66
|
+
|
|
67
|
+
### Expo / Lynx
|
|
68
|
+
|
|
69
|
+
Оптимізація бандла **ще недоступна** для цієї платформи. Підтримка буде додана в майбутньому релізі.
|
|
70
|
+
|
|
71
|
+
## Конфігурація
|
|
72
|
+
|
|
73
|
+
Ви можете контролювати, як Intlayer оптимізує ваш бандл через властивість `build` у файлі `intlayer.config.ts`.
|
|
74
|
+
|
|
75
|
+
```typescript fileName="intlayer.config.ts"
|
|
76
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
77
|
+
|
|
78
|
+
const config: IntlayerConfig = {
|
|
79
|
+
internationalization: {
|
|
80
|
+
locales: [Locales.ENGLISH, Locales.FRENCH],
|
|
81
|
+
defaultLocale: Locales.ENGLISH,
|
|
82
|
+
},
|
|
83
|
+
build: {
|
|
84
|
+
optimize: true,
|
|
85
|
+
importMode: "static", // або 'dynamic'
|
|
86
|
+
traversePattern: ["**/*.{js,ts,mjs,cjs,jsx,tsx}", "!**/node_modules/**"],
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export default config;
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
> У більшості випадків рекомендовано залишати опцію `optimize` за замовчуванням.
|
|
94
|
+
|
|
95
|
+
> Див. документацію з конфігурації для більш детальної інформації: [Конфігурація](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/configuration.md)
|
|
96
|
+
|
|
97
|
+
### Параметри збірки
|
|
98
|
+
|
|
99
|
+
Наступні параметри доступні в об'єкті конфігурації `build`:
|
|
100
|
+
|
|
101
|
+
| Властивість | Тип | Значення за замовчуванням | Опис |
|
|
102
|
+
| :-------------------- | :------------------------------ | :------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
103
|
+
| **`optimize`** | `boolean` | `undefined` | Керує тим, чи увімкнена оптимізація під час збірки. Якщо `true`, Intlayer замінює виклики словників на оптимізовані інжекти. Якщо `false`, оптимізація вимкнена. Рекомендовано встановлювати `true` у production. |
|
|
104
|
+
| **`importMode`** | `'static' , 'dynamic' , 'live'` | `'static'` | Визначає, як завантажуються словники (див. деталі нижче). |
|
|
105
|
+
| **`traversePattern`** | `string[]` | `['**/*.{js,ts,jsx,tsx}', ...]` | Glob-шаблони, що визначають, які файли Intlayer має сканувати для оптимізації. Використовуйте це, щоб виключати несуміжні файли та прискорити збірку. |
|
|
106
|
+
| **`outputFormat`** | `'esm', 'cjs'` | `'esm', 'cjs'` | Керує форматом згенерованих словників. |
|
|
107
|
+
|
|
108
|
+
## Режими імпорту
|
|
109
|
+
|
|
110
|
+
Налаштування `importMode` визначає, як вміст словника вставляється у ваш компонент.
|
|
111
|
+
|
|
112
|
+
### 1. Статичний режим (`default`)
|
|
113
|
+
|
|
114
|
+
У статичному режимі Intlayer замінює `useIntlayer` на `useDictionary` і вбудовує словник безпосередньо в JavaScript-бандл.
|
|
115
|
+
|
|
116
|
+
- **Переваги:** Миттєвий рендеринг (синхронно), відсутність додаткових мережевих запитів під час гідратації.
|
|
117
|
+
- **Недоліки:** Бандл містить переклади для **усіх** доступних мов для цього конкретного компонента.
|
|
118
|
+
- **Найкраще для:** односторінкових додатків (SPA).
|
|
119
|
+
|
|
120
|
+
**Приклад трансформованого коду:**
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
// Ваш код
|
|
124
|
+
const content = useIntlayer("my-key");
|
|
125
|
+
|
|
126
|
+
// Оптимізований код (Статичний)
|
|
127
|
+
const content = useDictionary({
|
|
128
|
+
key: "my-key",
|
|
129
|
+
content: {
|
|
130
|
+
nodeType: "translation",
|
|
131
|
+
translation: {
|
|
132
|
+
uk: "Мій заголовок",
|
|
133
|
+
en: "My title",
|
|
134
|
+
fr: "Mon titre",
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 2. Динамічний режим
|
|
141
|
+
|
|
142
|
+
У динамічному режимі Intlayer замінює `useIntlayer` на `useDictionaryAsync`. Це використовує `import()` (механізм, схожий на Suspense) для лінивого підвантаження саме JSON для поточної локалі.
|
|
143
|
+
|
|
144
|
+
- **Плюси:** **Tree-shaking на рівні локалі.** Користувач, який переглядає англійську версію, завантажить _лише_ англійський словник. Французький словник ніколи не завантажується.
|
|
145
|
+
- **Мінуси:** Під час гідратації ініціюється мережевий запит (завантаження ресурсу) для кожного компонента.
|
|
146
|
+
- **Кращий вибір для:** Великих текстових блоків, статей або застосунків з підтримкою багатьох мов, де розмір бандла критично важливий.
|
|
147
|
+
|
|
148
|
+
**Приклад трансформованого коду:**
|
|
149
|
+
|
|
150
|
+
```tsx
|
|
151
|
+
// Ваш код
|
|
152
|
+
const content = useIntlayer("my-key");
|
|
153
|
+
|
|
154
|
+
// Оптимізований код (Динамічний)
|
|
155
|
+
const content = useDictionaryAsync({
|
|
156
|
+
en: () =>
|
|
157
|
+
import(".intlayer/dynamic_dictionary/my-key/en.json").then(
|
|
158
|
+
(mod) => mod.default
|
|
159
|
+
),
|
|
160
|
+
fr: () =>
|
|
161
|
+
import(".intlayer/dynamic_dictionary/my-key/fr.json").then(
|
|
162
|
+
(mod) => mod.default
|
|
163
|
+
),
|
|
164
|
+
});
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
> Коли ви використовуєте `importMode: 'dynamic'`, якщо на одній сторінці 100 компонентів використовують `useIntlayer`, браузер спробує виконати 100 окремих запитів. Щоб уникнути цього «водоспаду» запитів, групуйте контент у меншу кількість `.content` файлів (наприклад, по одному словнику на секцію сторінки), замість одного файлу на кожен атом-компонент.
|
|
168
|
+
|
|
169
|
+
> Наразі `importMode: 'dynamic'` не повністю підтримується для Vue та Svelte. Рекомендується використовувати `importMode: 'static'` для цих фреймворків до наступних оновлень.
|
|
170
|
+
|
|
171
|
+
### 3. Живий режим
|
|
172
|
+
|
|
173
|
+
Працює аналогічно динамічному режиму, але спочатку намагається отримати словники з Intlayer Live Sync API. Якщо виклик API не вдасться або вміст не позначено для живих оновлень, виконується відкат до динамічного імпорту.
|
|
174
|
+
|
|
175
|
+
> Див. документацію CMS для детальнішої інформації: [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md)
|
|
176
|
+
|
|
177
|
+
## Підсумок: Статичний vs Динамічний
|
|
178
|
+
|
|
179
|
+
| Особливість | Статичний режим | Динамічний режим |
|
|
180
|
+
| :------------------------- | :---------------------------------------- | :---------------------------------------------- |
|
|
181
|
+
| **Розмір JS-бандла** | Більший (включає всі мови для компонента) | Найменший (тільки код, без контенту) |
|
|
182
|
+
| **Початкове завантаження** | Миттєво (вміст у bundle) | Невелика затримка (завантажує JSON) |
|
|
183
|
+
| **Мережеві запити** | 0 додаткових запитів | 1 запит на словник |
|
|
184
|
+
| **Tree Shaking** | На рівні компонентів | На рівні компонентів + на рівні локалі |
|
|
185
|
+
| **Найкраще використання** | UI Components, невеликі додатки | Сторінки з великою кількістю тексту, багато мов |
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-08-11
|
|
3
|
+
updatedAt: 2025-11-22
|
|
4
|
+
title: Побудова словників
|
|
5
|
+
description: Дізнайтеся, як побудувати словники Intlayer зі файлів декларації контенту.
|
|
6
|
+
keywords:
|
|
7
|
+
- Build
|
|
8
|
+
- Dictionaries
|
|
9
|
+
- CLI
|
|
10
|
+
- Intlayer
|
|
11
|
+
slugs:
|
|
12
|
+
- doc
|
|
13
|
+
- concept
|
|
14
|
+
- cli
|
|
15
|
+
- build
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Побудова словників
|
|
19
|
+
|
|
20
|
+
Щоб побудувати ваші словники, ви можете виконати команди:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx intlayer build
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
або в режимі відстеження
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx intlayer build --watch
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Ця команда за замовчуванням знайде ваші файли декларації контенту за шляхом `./src/**/*.content.{ts|js|mjs|cjs|json|tsx|jsx}` і побудує словники в директорії `.intlayer`.
|
|
33
|
+
|
|
34
|
+
## Аліаси:
|
|
35
|
+
|
|
36
|
+
- `npx intlayer dictionaries build`
|
|
37
|
+
- `npx intlayer dictionary build`
|
|
38
|
+
- `npx intlayer dic build`
|
|
39
|
+
|
|
40
|
+
## Аргументи:
|
|
41
|
+
|
|
42
|
+
- **`--base-dir`**: Вказати базовий каталог проєкту. Щоб знайти конфігурацію intlayer, команда шукатиме файл `intlayer.config.{ts,js,json,cjs,mjs}` у базовому каталозі.
|
|
43
|
+
|
|
44
|
+
> Приклад: `npx intlayer build --base-dir ./src`
|
|
45
|
+
|
|
46
|
+
- **`--env`**: Вказати середовище (наприклад, `development`, `production`). Корисно, якщо ви використовуєте змінні середовища в файлі конфігурації intlayer.
|
|
47
|
+
|
|
48
|
+
> Приклад: `npx intlayer build --env production`
|
|
49
|
+
|
|
50
|
+
- **`--env-file`**: Вказати кастомний файл середовища, звідки завантажувати змінні. Корисно, якщо ви використовуєте змінні середовища в файлі конфігурації intlayer.
|
|
51
|
+
|
|
52
|
+
> Приклад: `npx intlayer build --env-file .env.production.local`
|
|
53
|
+
|
|
54
|
+
- **`--with`**: Запустити команду паралельно зі збіркою.
|
|
55
|
+
|
|
56
|
+
> Приклад: `npx intlayer build --with "next dev --turbopack"`
|
|
57
|
+
|
|
58
|
+
- **`--skip-prepare`**: Пропустити крок підготовки.
|
|
59
|
+
|
|
60
|
+
> Приклад: `npx intlayer build --skip-prepare`
|
|
61
|
+
|
|
62
|
+
- **`--no-cache`**: Вимкнути кеш.
|
|
63
|
+
|
|
64
|
+
> Приклад: `npx intlayer build --no-cache`
|