@intlayer/docs 7.5.11 → 7.5.13
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/intlayer_with_i18next.md +0 -2
- package/blog/ar/intlayer_with_next-i18next.md +0 -2
- package/blog/ar/intlayer_with_react-i18next.md +0 -2
- package/blog/de/intlayer_with_i18next.md +0 -45
- package/blog/de/intlayer_with_next-i18next.md +0 -46
- package/blog/de/intlayer_with_react-i18next.md +0 -2
- package/blog/en/intlayer_with_i18next.md +0 -46
- package/blog/en/intlayer_with_next-i18next.md +0 -48
- package/blog/en/intlayer_with_next-intl.md +0 -44
- package/blog/en/intlayer_with_react-i18next.md +0 -44
- package/blog/en/intlayer_with_react-intl.md +0 -42
- package/blog/en/intlayer_with_vue-i18n.md +0 -44
- package/blog/en-GB/intlayer_with_i18next.md +0 -45
- package/blog/en-GB/intlayer_with_next-i18next.md +0 -47
- package/blog/en-GB/intlayer_with_next-intl.md +0 -42
- package/blog/en-GB/intlayer_with_react-i18next.md +0 -43
- package/blog/en-GB/intlayer_with_react-intl.md +0 -42
- package/blog/en-GB/intlayer_with_vue-i18n.md +0 -46
- package/blog/es/intlayer_with_i18next.md +0 -45
- package/blog/es/intlayer_with_next-i18next.md +0 -47
- package/blog/es/intlayer_with_next-intl.md +0 -42
- package/blog/es/intlayer_with_react-i18next.md +0 -43
- package/blog/es/intlayer_with_react-intl.md +0 -42
- package/blog/es/intlayer_with_vue-i18n.md +0 -46
- package/blog/fr/intlayer_with_i18next.md +0 -45
- package/blog/fr/intlayer_with_next-i18next.md +0 -47
- package/blog/fr/intlayer_with_next-intl.md +0 -42
- package/blog/fr/intlayer_with_react-i18next.md +0 -43
- package/blog/fr/intlayer_with_react-intl.md +0 -42
- package/blog/fr/intlayer_with_vue-i18n.md +0 -46
- package/blog/hi/intlayer_with_i18next.md +0 -2
- package/blog/hi/intlayer_with_next-i18next.md +0 -2
- package/blog/hi/intlayer_with_react-i18next.md +0 -2
- package/blog/id/intlayer_with_i18next.md +0 -2
- package/blog/id/intlayer_with_next-i18next.md +0 -2
- package/blog/id/intlayer_with_react-i18next.md +0 -2
- package/blog/it/intlayer_with_i18next.md +0 -2
- package/blog/it/intlayer_with_next-i18next.md +0 -2
- package/blog/it/intlayer_with_react-i18next.md +0 -2
- package/blog/ja/intlayer_with_i18next.md +0 -45
- package/blog/ja/intlayer_with_next-i18next.md +0 -46
- package/blog/ja/intlayer_with_next-intl.md +0 -42
- package/blog/ja/intlayer_with_react-i18next.md +0 -42
- package/blog/ja/intlayer_with_react-intl.md +0 -42
- package/blog/ja/intlayer_with_vue-i18n.md +0 -46
- package/blog/ko/intlayer_with_i18next.md +0 -2
- package/blog/ko/intlayer_with_next-i18next.md +0 -2
- package/blog/ko/intlayer_with_react-i18next.md +0 -1
- package/blog/pl/intlayer_with_i18next.md +0 -45
- package/blog/pl/intlayer_with_next-i18next.md +0 -46
- package/blog/pl/intlayer_with_next-intl.md +0 -42
- package/blog/pl/intlayer_with_react-i18next.md +0 -43
- package/blog/pl/intlayer_with_react-intl.md +0 -42
- package/blog/pl/intlayer_with_vue-i18n.md +0 -46
- package/blog/pt/intlayer_with_i18next.md +0 -2
- package/blog/pt/intlayer_with_next-i18next.md +0 -2
- package/blog/pt/intlayer_with_react-i18next.md +0 -2
- package/blog/ru/intlayer_with_i18next.md +0 -45
- package/blog/ru/intlayer_with_next-i18next.md +0 -47
- package/blog/ru/intlayer_with_next-intl.md +0 -42
- package/blog/ru/intlayer_with_react-i18next.md +0 -43
- package/blog/ru/intlayer_with_react-intl.md +0 -42
- package/blog/ru/intlayer_with_vue-i18n.md +0 -46
- package/blog/tr/intlayer_with_i18next.md +0 -2
- package/blog/tr/intlayer_with_next-i18next.md +0 -1
- package/blog/tr/intlayer_with_react-i18next.md +0 -2
- 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/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/intlayer_with_i18next.md +0 -2
- package/blog/vi/intlayer_with_next-i18next.md +0 -2
- package/blog/vi/intlayer_with_react-i18next.md +0 -2
- package/blog/zh/intlayer_with_i18next.md +0 -2
- package/blog/zh/intlayer_with_next-i18next.md +0 -2
- package/blog/zh/intlayer_with_react-i18next.md +0 -2
- package/blog/zh/intlayer_with_vue-i18n.md +0 -46
- package/dist/cjs/generated/blog.entry.cjs +58 -29
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +218 -99
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +50 -15
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +4 -2
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +58 -29
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +218 -99
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +50 -15
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +4 -2
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.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/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/configuration.md +6 -1
- package/docs/ar/dictionary/content_file.md +6 -1
- package/docs/ar/intlayer_with_next-i18next.md +0 -1
- package/docs/ar/intlayer_with_nextjs_14.md +28 -0
- package/docs/ar/intlayer_with_nextjs_15.md +28 -0
- package/docs/ar/intlayer_with_nextjs_16.md +28 -0
- package/docs/ar/intlayer_with_nextjs_no_locale_path.md +1159 -0
- package/docs/ar/plugins/sync-json.md +6 -2
- package/docs/de/configuration.md +6 -1
- package/docs/de/dictionary/content_file.md +6 -1
- package/docs/de/intlayer_with_next-i18next.md +0 -1
- package/docs/de/intlayer_with_nextjs_14.md +28 -0
- package/docs/de/intlayer_with_nextjs_15.md +28 -0
- package/docs/de/intlayer_with_nextjs_16.md +28 -0
- package/docs/de/intlayer_with_nextjs_no_locale_path.md +1152 -0
- package/docs/de/plugins/sync-json.md +6 -2
- package/docs/en/configuration.md +6 -1
- package/docs/en/dictionary/content_file.md +6 -1
- package/docs/en/intlayer_with_next-i18next.md +0 -1
- package/docs/en/intlayer_with_nextjs_14.md +28 -0
- package/docs/en/intlayer_with_nextjs_15.md +28 -0
- package/docs/en/intlayer_with_nextjs_16.md +31 -1
- package/docs/en/intlayer_with_nextjs_no_locale_path.md +1132 -0
- package/docs/en/plugins/sync-json.md +6 -2
- package/docs/en-GB/configuration.md +6 -1
- package/docs/en-GB/dictionary/content_file.md +3 -1
- package/docs/en-GB/intlayer_with_next-i18next.md +0 -1
- package/docs/en-GB/intlayer_with_nextjs_14.md +28 -0
- package/docs/en-GB/intlayer_with_nextjs_15.md +28 -0
- package/docs/en-GB/intlayer_with_nextjs_16.md +28 -0
- package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +1154 -0
- package/docs/en-GB/plugins/sync-json.md +6 -2
- package/docs/es/configuration.md +6 -1
- package/docs/es/dictionary/content_file.md +6 -1
- package/docs/es/intlayer_with_next-i18next.md +0 -1
- package/docs/es/intlayer_with_nextjs_14.md +28 -0
- package/docs/es/intlayer_with_nextjs_15.md +28 -0
- package/docs/es/intlayer_with_nextjs_16.md +28 -0
- package/docs/es/intlayer_with_nextjs_no_locale_path.md +1143 -0
- package/docs/es/plugins/sync-json.md +6 -2
- package/docs/fr/configuration.md +6 -1
- package/docs/fr/dictionary/content_file.md +3 -1
- package/docs/fr/intlayer_with_next-i18next.md +0 -1
- package/docs/fr/intlayer_with_nextjs_14.md +28 -0
- package/docs/fr/intlayer_with_nextjs_15.md +28 -0
- package/docs/fr/intlayer_with_nextjs_16.md +28 -0
- package/docs/fr/intlayer_with_nextjs_no_locale_path.md +1174 -0
- package/docs/fr/plugins/sync-json.md +9 -5
- package/docs/hi/configuration.md +6 -1
- package/docs/hi/dictionary/content_file.md +3 -1
- package/docs/hi/intlayer_with_next-i18next.md +0 -1
- package/docs/hi/intlayer_with_nextjs_14.md +28 -0
- package/docs/hi/intlayer_with_nextjs_15.md +28 -0
- package/docs/hi/intlayer_with_nextjs_16.md +28 -0
- package/docs/hi/intlayer_with_nextjs_no_locale_path.md +1151 -0
- package/docs/hi/plugins/sync-json.md +6 -2
- package/docs/id/configuration.md +6 -1
- package/docs/id/dictionary/content_file.md +3 -1
- package/docs/id/intlayer_with_next-i18next.md +0 -1
- package/docs/id/intlayer_with_nextjs_14.md +28 -0
- package/docs/id/intlayer_with_nextjs_15.md +28 -0
- package/docs/id/intlayer_with_nextjs_16.md +28 -0
- package/docs/id/intlayer_with_nextjs_no_locale_path.md +1154 -0
- package/docs/id/plugins/sync-json.md +6 -2
- package/docs/it/configuration.md +6 -1
- package/docs/it/dictionary/content_file.md +3 -1
- package/docs/it/intlayer_with_next-i18next.md +0 -1
- package/docs/it/intlayer_with_nextjs_14.md +28 -0
- package/docs/it/intlayer_with_nextjs_15.md +28 -0
- package/docs/it/intlayer_with_nextjs_16.md +28 -0
- package/docs/it/intlayer_with_nextjs_no_locale_path.md +1148 -0
- package/docs/it/plugins/sync-json.md +6 -2
- package/docs/ja/configuration.md +6 -1
- package/docs/ja/dictionary/content_file.md +3 -1
- package/docs/ja/intlayer_with_next-i18next.md +0 -1
- package/docs/ja/intlayer_with_nextjs_14.md +28 -0
- package/docs/ja/intlayer_with_nextjs_15.md +28 -0
- package/docs/ja/intlayer_with_nextjs_16.md +28 -0
- package/docs/ja/intlayer_with_nextjs_no_locale_path.md +1222 -0
- package/docs/ja/plugins/sync-json.md +6 -2
- package/docs/ko/configuration.md +6 -1
- package/docs/ko/dictionary/content_file.md +3 -1
- package/docs/ko/intlayer_with_next-i18next.md +0 -1
- package/docs/ko/intlayer_with_nextjs_14.md +28 -0
- package/docs/ko/intlayer_with_nextjs_15.md +28 -0
- package/docs/ko/intlayer_with_nextjs_16.md +28 -0
- package/docs/ko/intlayer_with_nextjs_no_locale_path.md +1205 -0
- package/docs/ko/plugins/sync-json.md +6 -2
- package/docs/pl/configuration.md +3 -1
- package/docs/pl/dictionary/content_file.md +3 -1
- package/docs/pl/intlayer_with_next-i18next.md +0 -1
- package/docs/pl/intlayer_with_nextjs_14.md +28 -0
- package/docs/pl/intlayer_with_nextjs_15.md +28 -0
- package/docs/pl/intlayer_with_nextjs_16.md +28 -0
- package/docs/pl/intlayer_with_nextjs_no_locale_path.md +1149 -0
- package/docs/pl/plugins/sync-json.md +6 -2
- package/docs/pt/configuration.md +6 -1
- package/docs/pt/dictionary/content_file.md +3 -1
- package/docs/pt/intlayer_with_next-i18next.md +0 -1
- package/docs/pt/intlayer_with_nextjs_14.md +28 -0
- package/docs/pt/intlayer_with_nextjs_15.md +28 -0
- package/docs/pt/intlayer_with_nextjs_16.md +28 -0
- package/docs/pt/intlayer_with_nextjs_no_locale_path.md +1152 -0
- package/docs/pt/plugins/sync-json.md +6 -2
- package/docs/ru/configuration.md +6 -1
- package/docs/ru/dictionary/content_file.md +6 -1
- package/docs/ru/intlayer_with_next-i18next.md +0 -1
- package/docs/ru/intlayer_with_nextjs_14.md +28 -0
- package/docs/ru/intlayer_with_nextjs_15.md +28 -0
- package/docs/ru/intlayer_with_nextjs_16.md +28 -0
- package/docs/ru/intlayer_with_nextjs_no_locale_path.md +1204 -0
- package/docs/ru/plugins/sync-json.md +6 -2
- package/docs/tr/configuration.md +6 -1
- package/docs/tr/dictionary/content_file.md +3 -1
- package/docs/tr/intlayer_with_next-i18next.md +0 -1
- package/docs/tr/intlayer_with_nextjs_14.md +28 -0
- package/docs/tr/intlayer_with_nextjs_15.md +28 -0
- package/docs/tr/intlayer_with_nextjs_16.md +28 -0
- package/docs/tr/intlayer_with_nextjs_no_locale_path.md +1159 -0
- package/docs/tr/plugins/sync-json.md +6 -2
- 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/compiler.md +133 -0
- package/docs/uk/component_i18n.md +194 -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_14.md +1646 -0
- package/docs/uk/intlayer_with_nextjs_15.md +1910 -0
- package/docs/uk/intlayer_with_nextjs_16.md +1763 -0
- package/docs/uk/intlayer_with_nextjs_no_locale_path.md +1159 -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_native+expo.md +715 -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/getConfiguration.md +145 -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/uk/vs_code_extension.md +133 -0
- package/docs/vi/configuration.md +6 -1
- package/docs/vi/dictionary/content_file.md +6 -1
- package/docs/vi/intlayer_with_next-i18next.md +0 -1
- package/docs/vi/intlayer_with_nextjs_14.md +28 -0
- package/docs/vi/intlayer_with_nextjs_15.md +28 -0
- package/docs/vi/intlayer_with_nextjs_16.md +28 -0
- package/docs/vi/intlayer_with_nextjs_no_locale_path.md +1151 -0
- package/docs/vi/plugins/sync-json.md +6 -2
- package/docs/zh/configuration.md +6 -1
- package/docs/zh/dictionary/content_file.md +6 -1
- package/docs/zh/intlayer_with_next-i18next.md +0 -1
- package/docs/zh/intlayer_with_nextjs_14.md +28 -0
- package/docs/zh/intlayer_with_nextjs_15.md +28 -0
- package/docs/zh/intlayer_with_nextjs_16.md +28 -0
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +1206 -0
- package/docs/zh/plugins/sync-json.md +9 -5
- package/frequent_questions/ar/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/ar/error-vite-env-only.md +77 -0
- package/frequent_questions/de/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/de/error-vite-env-only.md +77 -0
- package/frequent_questions/en/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/en/error-vite-env-only.md +77 -0
- package/frequent_questions/en-GB/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/en-GB/error-vite-env-only.md +77 -0
- package/frequent_questions/es/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/es/error-vite-env-only.md +76 -0
- package/frequent_questions/fr/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/fr/error-vite-env-only.md +77 -0
- package/frequent_questions/hi/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/hi/error-vite-env-only.md +77 -0
- package/frequent_questions/id/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/id/error-vite-env-only.md +77 -0
- package/frequent_questions/it/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/it/error-vite-env-only.md +77 -0
- package/frequent_questions/ja/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/ja/error-vite-env-only.md +77 -0
- package/frequent_questions/ko/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/ko/error-vite-env-only.md +77 -0
- package/frequent_questions/pl/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/pl/error-vite-env-only.md +77 -0
- package/frequent_questions/pt/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/pt/error-vite-env-only.md +77 -0
- package/frequent_questions/ru/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/ru/error-vite-env-only.md +77 -0
- package/frequent_questions/tr/SSR_Next_no_[locale].md +1 -1
- 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/SSR_Next_no_[locale].md +1 -1
- package/frequent_questions/vi/error-vite-env-only.md +77 -0
- package/frequent_questions/zh/SSR_Next_no_[locale].md +1 -1
- 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 +6 -6
- package/src/generated/blog.entry.ts +29 -0
- package/src/generated/docs.entry.ts +119 -0
- package/src/generated/frequentQuestions.entry.ts +35 -0
- package/src/generated/legal.entry.ts +2 -0
|
@@ -108,17 +108,21 @@ syncJSON({
|
|
|
108
108
|
source: ({ key, locale }) => string, // 必填
|
|
109
109
|
location?: string, // 可选标签,默认值:"plugin"
|
|
110
110
|
priority?: number, // 可选优先级,用于冲突解决,默认值:0
|
|
111
|
-
format?: 'intlayer' | 'icu' | 'i18next', //
|
|
111
|
+
format?: 'intlayer' | 'icu' | 'i18next', // 可选格式化器,用于 Intlayer 运行时兼容性
|
|
112
112
|
});
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
#### `format` ('intlayer' | 'icu' | 'i18next')
|
|
116
116
|
|
|
117
|
-
指定在同步 JSON
|
|
117
|
+
指定在同步 JSON 文件时用于字典内容的格式化器。这允许使用与 Intlayer 运行时兼容的不同消息格式化语法。
|
|
118
118
|
|
|
119
|
-
- `
|
|
120
|
-
- `'
|
|
121
|
-
- `'
|
|
119
|
+
- `undefined`:不使用格式化器,JSON 内容将按原样使用。
|
|
120
|
+
- `'intlayer'`:默认的 Intlayer 格式化器(默认值)。
|
|
121
|
+
- `'icu'`:使用 ICU 消息格式化(与 react-intl、vue-i18n 等库兼容)。
|
|
122
|
+
- `'i18next'`:使用 i18next 消息格式化(与 i18next、next-i18next、Solid-i18next 兼容)。
|
|
123
|
+
|
|
124
|
+
> 请注意,使用格式化器会转换您的 JSON 内容的输入和输出。对于复杂的 JSON 规则(如 ICU 复数),解析可能无法确保输入和输出之间的 1 对 1 映射。
|
|
125
|
+
> 如果您不使用 Intlayer 运行时,您可能更倾向于不设置格式化器。
|
|
122
126
|
|
|
123
127
|
**示例:**
|
|
124
128
|
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-11
|
|
3
|
+
updatedAt: 2026-01-11
|
|
4
|
+
title: `vite-env-only` و Intlayer – خطأ رفض زائف `node:fs`
|
|
5
|
+
description: لماذا تبلغ vite-env-only عن رفض استيراد `node:fs` عند استخدام Intlayer + React-Router + Vite وماذا تفعل.
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- vite
|
|
9
|
+
- react-router
|
|
10
|
+
- vite-env-only
|
|
11
|
+
- node:fs
|
|
12
|
+
- رفض الاستيراد
|
|
13
|
+
- alias
|
|
14
|
+
- حزمة العميل
|
|
15
|
+
slugs:
|
|
16
|
+
- frequent-questions
|
|
17
|
+
- vite-env-only-node-fs-false-positive
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# vite-env-only يرفض `node:fs` مع Intlayer
|
|
21
|
+
|
|
22
|
+
إذا استخدمت الإضافة **vite-env-only** (كما ذُكر في اقتراحات React-Router v7 الأقدم) ورأيت:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
|
|
26
|
+
Error: [vite-env-only] Import denied
|
|
27
|
+
|
|
28
|
+
* Denied by specifier pattern: /^node:/
|
|
29
|
+
* Importer: index.html
|
|
30
|
+
* Import: "node:fs"
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
…على الرغم من أنه **لا يوجد `node:fs` في حزمة العميل الخاصة بك**، إلا أن هذا هو **إيجابي كاذب**.
|
|
35
|
+
|
|
36
|
+
## ما الذي يسببه
|
|
37
|
+
|
|
38
|
+
`vite-env-only` يقوم بفحص يعتمد على Babel **في وقت مبكر أثناء حل مخطط الاعتماديات في Vite**، _قبل_:
|
|
39
|
+
|
|
40
|
+
- aliasing (بما في ذلك خرائط Intlayer بين المتصفح وNode),
|
|
41
|
+
- إزالة الشيفرة غير المُستخدمة (dead-code elimination),
|
|
42
|
+
- حل SSR مقابل العميل،
|
|
43
|
+
- الوحدات الافتراضية مثل تلك في React-Router.
|
|
44
|
+
|
|
45
|
+
حزم Intlayer تحتوي على شيفرة يمكن أن تعمل على كل من Node والمتصفح. في مرحلة _وسيطة_، قد يظهر مكوّن مدمج في Node مثل `node:fs` في المخطط **قبل** أن يزيله Vite من بناء العميل. `vite-env-only` يلاحظ ذلك ويُطلق الخطأ فورًا، حتى وإن كانت الحزمة النهائية لا تحتوي عليه.
|
|
46
|
+
|
|
47
|
+
## React-Router ووحدات الخادم
|
|
48
|
+
|
|
49
|
+
في وثائق React-Router حول **اتفاقيات وحدات الخادم**
|
|
50
|
+
(https://reactrouter.com/api/framework-conventions/server-modules)، يقترح الفريق **بشكل صريح استخدام `vite-env-only`** لمنع استيرادات الخادم فقط من التسرب إلى حزمة العميل.
|
|
51
|
+
|
|
52
|
+
ومع ذلك، تعتمد تلك الاتفاقيات على aliasing الخاص بـ Vite، و conditional exports، و tree-shaking لإزالة كود الخادم فقط. بينما يتم تطبيق aliasing و conditional exports بالفعل، تظل بعض الأدوات المعتمدة على Node موجودة في حزم مثل `@intlayer/core` في تلك المرحلة (حتى وإن لم تُستورد على العميل). وبما أن عملية tree-shaking لم تُنفَّذ بعد، تُحلل تلك الدوال بواسطة Babel، ويكتشف `vite-env-only` استيرادات `node:` ويرفع نتيجة إيجابية كاذبة — على الرغم من أنها تُزال بشكل صحيح من حزمة العميل النهائية.
|
|
53
|
+
|
|
54
|
+
## كيفية الإصلاح / حلول بديلة
|
|
55
|
+
|
|
56
|
+
### موصى به: إزالة `vite-env-only`
|
|
57
|
+
|
|
58
|
+
ببساطة احذف الإضافة. في العديد من الحالات لست بحاجة إليها — Vite يتعامل بالفعل مع استيرادات العميل مقابل الخادم عبر آلية الحل الخاصة به.
|
|
59
|
+
|
|
60
|
+
هذا يصلح خطأ رفض `node:fs` الزائف دون أي تغييرات في Intlayer.
|
|
61
|
+
|
|
62
|
+
### تحقق من البناء النهائي بدلاً من ذلك
|
|
63
|
+
|
|
64
|
+
إذا رغبت مع ذلك بالتأكد من عدم وجود مكونات مدمجة من Node في جانب العميل، فافعل ذلك **بعد عملية البناء**، مثلاً:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm build
|
|
68
|
+
grep -R "node:" dist/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
إذا لم تُرجع نتائج، فإن حزم العميل نظيفة.
|
|
72
|
+
|
|
73
|
+
## ملخص
|
|
74
|
+
|
|
75
|
+
- قد يُخطئ `vite-env-only` بشأن `node:fs` لأنه يتحقق مبكرًا جدًا.
|
|
76
|
+
- عادةً ما تزيل Vite + Intlayer + إرشادات وحدات الخادم في React-Router المراجع الخاصة بالخادم بشكل صحيح.
|
|
77
|
+
- إزالة الإضافة أو التحقق من _المخرجات النهائية_ هو عادةً الحل الأفضل.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-11
|
|
3
|
+
updatedAt: 2026-01-11
|
|
4
|
+
title: "`vite-env-only` & Intlayer – falsch-positiver `node:fs`-Verweigerungsfehler"
|
|
5
|
+
description: Warum vite-env-only einen verweigerten `node:fs`-Import mit Intlayer + React-Router + Vite meldet und was zu tun ist.
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- vite
|
|
9
|
+
- react-router
|
|
10
|
+
- vite-env-only
|
|
11
|
+
- node:fs
|
|
12
|
+
- Import verweigert
|
|
13
|
+
- Alias
|
|
14
|
+
- Client-Bundle
|
|
15
|
+
slugs:
|
|
16
|
+
- frequent-questions
|
|
17
|
+
- vite-env-only-node-fs-false-positive
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# vite-env-only verweigert `node:fs` mit Intlayer
|
|
21
|
+
|
|
22
|
+
Wenn du das **vite-env-only**-Plugin verwendet hast (wie in älteren Empfehlungen von React-Router v7 erwähnt) und Folgendes siehst:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
|
|
26
|
+
Error: [vite-env-only] Import denied
|
|
27
|
+
|
|
28
|
+
* Denied by specifier pattern: /^node:/
|
|
29
|
+
* Importer: index.html
|
|
30
|
+
* Import: "node:fs"
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
…auch wenn sich **kein `node:fs` in deinem Client-Bundle** befindet, handelt es sich um ein **false positive**.
|
|
35
|
+
|
|
36
|
+
## Was verursacht es
|
|
37
|
+
|
|
38
|
+
`vite-env-only` führt eine Babel-basierte Prüfung **früh während der Vite-Graphauflösung** durch, _bevor_:
|
|
39
|
+
|
|
40
|
+
- aliasing (einschließlich Intlayer’s browser vs node mappings),
|
|
41
|
+
- Dead-Code-Elimination,
|
|
42
|
+
- SSR- vs. Client-Auflösung,
|
|
43
|
+
- virtuelle Module wie die von React-Router.
|
|
44
|
+
|
|
45
|
+
Intlayer-Pakete enthalten Code, der sowohl in Node als auch im Browser funktionieren kann. In einem _zwischenzeitlichen_ Stadium kann ein Node-Builtin wie `node:fs` im Graph erscheinen, **bevor** Vite es aus dem Client-Build entfernt. `vite-env-only` erkennt das und löst sofort einen Fehler aus, obwohl das finale Bundle es nicht enthält.
|
|
46
|
+
|
|
47
|
+
## React-Router und Server-Module
|
|
48
|
+
|
|
49
|
+
In der React-Router-Dokumentation zu den **Konventionen für Server-Module**
|
|
50
|
+
(https://reactrouter.com/api/framework-conventions/server-modules), das Team **empfiehlt ausdrücklich die Verwendung von `vite-env-only`**, um zu verhindern, dass serverseitige Importe in das Client-Bundle gelangen.
|
|
51
|
+
|
|
52
|
+
Diese Konventionen beruhen jedoch auf Vites Aliasing, conditional exports und tree-shaking, um serverseitigen Code zu entfernen. Während Aliasing und conditional exports bereits angewendet werden, sind einige Node-basierte Hilfsfunktionen zu diesem Zeitpunkt in Paketen wie `@intlayer/core` noch vorhanden (obwohl sie im Client niemals importiert werden). Da das tree-shaking noch nicht ausgeführt wurde, werden diese Funktionen weiterhin von Babel geparst, und `vite-env-only` erkennt deren `node:`-Importe und meldet einen False Positive — obwohl sie im finalen Client-Bundle korrekt entfernt werden.
|
|
53
|
+
|
|
54
|
+
## Wie man das behebt / umgeht
|
|
55
|
+
|
|
56
|
+
### Empfehlung: `vite-env-only` entfernen
|
|
57
|
+
|
|
58
|
+
Entfernen Sie einfach das Plugin. In vielen Fällen ist es nicht nötig — Vite unterscheidet bereits über seine eigene Auflösung zwischen Client- und Server-Imports.
|
|
59
|
+
|
|
60
|
+
Damit wird die fälschliche `node:fs`-Ablehnung behoben, ohne Änderungen an Intlayer.
|
|
61
|
+
|
|
62
|
+
### Stattdessen den finalen Build prüfen
|
|
63
|
+
|
|
64
|
+
Wenn Sie dennoch sicherstellen möchten, dass keine Node-Built-ins im Client landen, prüfen Sie dies **nach dem Build**, z. B.:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm build
|
|
68
|
+
grep -R "node:" dist/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Wenn es keine Ergebnisse gibt, sind Ihre Client-Bundles sauber.
|
|
72
|
+
|
|
73
|
+
## Zusammenfassung
|
|
74
|
+
|
|
75
|
+
- `vite-env-only` kann bei `node:fs` einen Fehler melden, weil es zu früh prüft.
|
|
76
|
+
- Vite + Intlayer + die Server-Module-Konventionen von React-Router entfernen normalerweise Server-only-Referenzen korrekt.
|
|
77
|
+
- Das Entfernen des Plugins oder die Überprüfung der _finalen Ausgabe_ ist in der Regel die beste Lösung.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-11
|
|
3
|
+
updatedAt: 2026-01-11
|
|
4
|
+
title: `vite-env-only` & Intlayer – false positive `node:fs` denied error
|
|
5
|
+
description: Why vite-env-only reports a denied `node:fs` import with Intlayer + React-Router + Vite and what to do.
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- vite
|
|
9
|
+
- react-router
|
|
10
|
+
- vite-env-only
|
|
11
|
+
- node:fs
|
|
12
|
+
- import denied
|
|
13
|
+
- alias
|
|
14
|
+
- client bundle
|
|
15
|
+
slugs:
|
|
16
|
+
- frequent-questions
|
|
17
|
+
- vite-env-only-node-fs-false-positive
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# vite-env-only denies `node:fs` with Intlayer
|
|
21
|
+
|
|
22
|
+
If you used the **vite-env-only** plugin (as mentioned in older React-Router v7 suggestions) and see:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
|
|
26
|
+
Error: [vite-env-only] Import denied
|
|
27
|
+
|
|
28
|
+
* Denied by specifier pattern: /^node:/
|
|
29
|
+
* Importer: index.html
|
|
30
|
+
* Import: "node:fs"
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
…even though there’s **no `node:fs` in your client bundle**, this is a **false positive**.
|
|
35
|
+
|
|
36
|
+
## What causes it
|
|
37
|
+
|
|
38
|
+
`vite-env-only` runs a Babel-based check **early in the Vite graph resolution**, _before_:
|
|
39
|
+
|
|
40
|
+
- aliasing (including Intlayer’s browser vs node mappings),
|
|
41
|
+
- dead-code elimination,
|
|
42
|
+
- SSR vs client resolution,
|
|
43
|
+
- virtual modules like React-Router’s.
|
|
44
|
+
|
|
45
|
+
Intlayer packages contain code that can work on both Node and browser. At an _intermediate_ stage, a Node built-in like `node:fs` may appear in the graph **before** Vite removes it from the client build. `vite-env-only` sees that and errors immediately, even though the final bundle doesn’t contain it.
|
|
46
|
+
|
|
47
|
+
## React-Router and Server Modules
|
|
48
|
+
|
|
49
|
+
In the React-Router documentation about **server module conventions**
|
|
50
|
+
(https://reactrouter.com/api/framework-conventions/server-modules), the team **explicitly suggests using `vite-env-only`** to prevent server-only imports from leaking into the client bundle.
|
|
51
|
+
|
|
52
|
+
However, those conventions rely on Vite’s aliasing, conditional exports, and tree-shaking to remove server-only code. While aliasing and conditional exports are already applied, some Node-based utilities are still present in packages like `@intlayer/core` at that stage (even though they are never imported on the client). Because tree-shaking has not run yet, those functions are still parsed by Babel, and `vite-env-only` detects their `node:` imports and raises a false positive — even though they are correctly purged from the final client bundle.
|
|
53
|
+
|
|
54
|
+
## How to fix / work around
|
|
55
|
+
|
|
56
|
+
### Recommended: Drop `vite-env-only`
|
|
57
|
+
|
|
58
|
+
Simply remove the plugin. In many cases you don’t need it — Vite already handles client vs server imports via its own resolution.
|
|
59
|
+
|
|
60
|
+
This fixes the false `node:fs` denial without changes to Intlayer.
|
|
61
|
+
|
|
62
|
+
### Validate the final build instead
|
|
63
|
+
|
|
64
|
+
If you still want to ensure no Node built-ins in the client, do it **after build**, e.g.:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm build
|
|
68
|
+
grep -R "node:" dist/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If no results, your client bundles are clean.
|
|
72
|
+
|
|
73
|
+
## Summary
|
|
74
|
+
|
|
75
|
+
- `vite-env-only` can error on `node:fs` because it checks too early.
|
|
76
|
+
- Vite + Intlayer + React-Router’s server modules conventions normally remove server-only references correctly.
|
|
77
|
+
- Removing the plugin or verifying the _final output_ is usually the best solution.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-11
|
|
3
|
+
updatedAt: 2026-01-11
|
|
4
|
+
title: `vite-env-only` & Intlayer – false positive `node:fs` denied import error
|
|
5
|
+
description: Why vite-env-only reports a denied `node:fs` import with Intlayer + React-Router + Vite, and what to do about it.
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- vite
|
|
9
|
+
- react-router
|
|
10
|
+
- vite-env-only
|
|
11
|
+
- node:fs
|
|
12
|
+
- import denied
|
|
13
|
+
- alias
|
|
14
|
+
- client bundle
|
|
15
|
+
slugs:
|
|
16
|
+
- frequent-questions
|
|
17
|
+
- vite-env-only-node-fs-false-positive
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# vite-env-only denies `node:fs` with Intlayer
|
|
21
|
+
|
|
22
|
+
If you've used the **vite-env-only** plugin (as suggested in older React-Router v7 guidance) and see:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
|
|
26
|
+
Error: [vite-env-only] Import denied
|
|
27
|
+
|
|
28
|
+
* Denied by specifier pattern: /^node:/
|
|
29
|
+
* Importer: index.html
|
|
30
|
+
* Import: "node:fs"
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
…even though there’s **no `node:fs` in your client bundle**, this is a **false positive**.
|
|
35
|
+
|
|
36
|
+
## What causes this
|
|
37
|
+
|
|
38
|
+
`vite-env-only` runs a Babel-based check early in the Vite graph resolution, _before_:
|
|
39
|
+
|
|
40
|
+
- aliasing (including Intlayer’s browser vs node mappings),
|
|
41
|
+
- dead-code elimination,
|
|
42
|
+
- SSR vs client resolution,
|
|
43
|
+
- virtual modules like React-Router’s.
|
|
44
|
+
|
|
45
|
+
Intlayer packages contain code that can work on both Node and the browser. At an _intermediate_ stage, a Node built-in like `node:fs` may appear in the graph **before** Vite removes it from the client build. `vite-env-only` sees that and errors immediately, even though the final bundle doesn’t contain it.
|
|
46
|
+
|
|
47
|
+
## React-Router and Server Modules
|
|
48
|
+
|
|
49
|
+
In the React-Router documentation about **server module conventions**
|
|
50
|
+
(https://reactrouter.com/api/framework-conventions/server-modules), the team **explicitly recommends using `vite-env-only`** to prevent server-only imports from leaking into the client bundle.
|
|
51
|
+
|
|
52
|
+
However, those conventions rely on Vite’s aliasing, conditional exports, and tree-shaking to remove server-only code. While aliasing and conditional exports are already applied, some Node-based utilities are still present in packages like `@intlayer/core` at that stage (even though they are never imported on the client). Because tree-shaking has not run yet, those functions are still parsed by Babel, and `vite-env-only` detects their `node:` imports and flags a false positive — even though they are correctly removed from the final client bundle.
|
|
53
|
+
|
|
54
|
+
## How to fix / work around
|
|
55
|
+
|
|
56
|
+
### Recommended: Remove `vite-env-only`
|
|
57
|
+
|
|
58
|
+
Simply remove the plugin. In many cases you don’t need it — Vite already handles client vs server imports via its own resolution.
|
|
59
|
+
|
|
60
|
+
This fixes the false `node:fs` denial without any changes to Intlayer.
|
|
61
|
+
|
|
62
|
+
### Validate the final build instead
|
|
63
|
+
|
|
64
|
+
If you still want to ensure there are no Node built-ins in the client, do it **after the build**, e.g.:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm build
|
|
68
|
+
grep -R "node:" dist/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If there are no results, your client bundles are clean.
|
|
72
|
+
|
|
73
|
+
## Summary
|
|
74
|
+
|
|
75
|
+
- `vite-env-only` can error on `node:fs` because it checks too early.
|
|
76
|
+
- Vite + Intlayer + React-Router’s server modules conventions normally remove server-only references correctly.
|
|
77
|
+
- Removing the plugin or verifying the _final output_ is usually the best solution.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-11
|
|
3
|
+
updatedAt: 2026-01-11
|
|
4
|
+
title: `vite-env-only` y Intlayer – error falso positivo `node:fs` import denegado
|
|
5
|
+
description: Por qué vite-env-only informa una importación `node:fs` denegada con Intlayer + React-Router + Vite y qué hacer.
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- vite
|
|
9
|
+
- react-router
|
|
10
|
+
- vite-env-only
|
|
11
|
+
- node:fs
|
|
12
|
+
- import denied
|
|
13
|
+
- alias
|
|
14
|
+
- client bundle
|
|
15
|
+
slugs:
|
|
16
|
+
- frequent-questions
|
|
17
|
+
- vite-env-only-node-fs-false-positive
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# `vite-env-only` deniega `node:fs` con Intlayer
|
|
21
|
+
|
|
22
|
+
Si usaste el plugin **vite-env-only** (como se menciona en sugerencias antiguas de React-Router v7) y ves:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
|
|
26
|
+
Error: [vite-env-only] Import denied
|
|
27
|
+
|
|
28
|
+
* Denied by specifier pattern: /^node:/
|
|
29
|
+
* Importer: index.html
|
|
30
|
+
* Import: "node:fs"
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
…aunque **no haya `node:fs` en tu client bundle**, esto es un **falso positivo**.
|
|
35
|
+
|
|
36
|
+
## Qué lo causa
|
|
37
|
+
|
|
38
|
+
`vite-env-only` ejecuta una comprobación basada en Babel **temprano en la resolución del grafo de Vite**, _antes de_:
|
|
39
|
+
|
|
40
|
+
- aliasing (incluyendo los mappings browser vs node de Intlayer),
|
|
41
|
+
- dead-code elimination,
|
|
42
|
+
- SSR vs client resolution,
|
|
43
|
+
- módulos virtuales como los de React-Router.
|
|
44
|
+
|
|
45
|
+
Los paquetes de Intlayer contienen código que puede funcionar tanto en Node como en el navegador. En una etapa _intermedia_, una API integrada de Node como `node:fs` puede aparecer en el grafo **antes** de que Vite la elimine del client build. `vite-env-only` detecta eso y lanza un error de inmediato, aunque el bundle final no lo incluya.
|
|
46
|
+
|
|
47
|
+
## React-Router y convenciones de módulos del servidor
|
|
48
|
+
|
|
49
|
+
(https://reactrouter.com/api/framework-conventions/server-modules), el equipo **sugiere explícitamente usar `vite-env-only`** para evitar que las importaciones exclusivas del servidor se filtren en el bundle del cliente.
|
|
50
|
+
|
|
51
|
+
Sin embargo, esas convenciones dependen del aliasing de Vite, las exportaciones condicionales y el tree-shaking para eliminar el código exclusivo del servidor. Aunque el aliasing y las exportaciones condicionales ya se aplican, algunas utilidades basadas en Node aún están presentes en paquetes como `@intlayer/core` en esa etapa (aunque nunca se importan en el cliente). Como el tree-shaking no se ha ejecutado todavía, esas funciones todavía son parseadas por Babel, y `vite-env-only` detecta sus importaciones `node:` y produce un falso positivo — aunque se purgan correctamente del bundle final del cliente.
|
|
52
|
+
|
|
53
|
+
## Cómo solucionarlo / soluciones alternativas
|
|
54
|
+
|
|
55
|
+
### Recomendado: Eliminar `vite-env-only`
|
|
56
|
+
|
|
57
|
+
Simplemente elimina el plugin. En muchos casos no lo necesitas — Vite ya gestiona las importaciones cliente vs servidor mediante su propia resolución.
|
|
58
|
+
|
|
59
|
+
Esto soluciona la denegación falsa de `node:fs` sin cambios en Intlayer.
|
|
60
|
+
|
|
61
|
+
### Valida la compilación final en su lugar
|
|
62
|
+
|
|
63
|
+
Si aún quieres asegurarte de que no haya módulos integrados de Node en el cliente, hazlo **después del build**, p. ej.:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pnpm build
|
|
67
|
+
grep -R "node:" dist/
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Si no hay resultados, tus bundles del cliente están limpios.
|
|
71
|
+
|
|
72
|
+
## Resumen
|
|
73
|
+
|
|
74
|
+
- `vite-env-only` puede arrojar un error sobre `node:fs` porque comprueba demasiado pronto.
|
|
75
|
+
- Vite + Intlayer + las convenciones de server modules de React-Router normalmente eliminan correctamente las referencias exclusivas del servidor.
|
|
76
|
+
- Eliminar el plugin o verificar el _resultado final_ suele ser la mejor solución.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-11
|
|
3
|
+
updatedAt: 2026-01-11
|
|
4
|
+
title: `vite-env-only` & Intlayer – faux positif : import `node:fs` refusé
|
|
5
|
+
description: Pourquoi vite-env-only signale un import `node:fs` refusé avec Intlayer + React-Router + Vite et que faire.
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- vite
|
|
9
|
+
- react-router
|
|
10
|
+
- vite-env-only
|
|
11
|
+
- node:fs
|
|
12
|
+
- import refusé
|
|
13
|
+
- alias
|
|
14
|
+
- client bundle
|
|
15
|
+
slugs:
|
|
16
|
+
- frequent-questions
|
|
17
|
+
- vite-env-only-node-fs-false-positive
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# vite-env-only refuse `node:fs` avec Intlayer
|
|
21
|
+
|
|
22
|
+
Si vous avez utilisé le plugin **vite-env-only** (comme mentionné dans d'anciennes suggestions pour React-Router v7) et que vous voyez :
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
|
|
26
|
+
Error: [vite-env-only] Import denied
|
|
27
|
+
|
|
28
|
+
* Denied by specifier pattern: /^node:/
|
|
29
|
+
* Importer: index.html
|
|
30
|
+
* Import: "node:fs"
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
…même s'il n'y a **aucun `node:fs` dans votre bundle client**, il s'agit d'un **faux positif**.
|
|
35
|
+
|
|
36
|
+
## Quelle en est la cause
|
|
37
|
+
|
|
38
|
+
`vite-env-only` effectue une vérification basée sur Babel **tôt dans la résolution du graphe Vite**, _avant_ :
|
|
39
|
+
|
|
40
|
+
- les alias (y compris les mappages browser vs node d'Intlayer),
|
|
41
|
+
- l'élimination du code mort,
|
|
42
|
+
- la résolution SSR vs client,
|
|
43
|
+
- les modules virtuels comme ceux de React-Router.
|
|
44
|
+
|
|
45
|
+
Les packages Intlayer contiennent du code pouvant s'exécuter à la fois sur Node et dans le navigateur. À un stade _intermédiaire_, un module natif Node comme `node:fs` peut apparaître dans le graphe **avant** que Vite ne l'élimine du build client. `vite-env-only` le détecte et génère immédiatement une erreur, même si le bundle final ne le contient pas.
|
|
46
|
+
|
|
47
|
+
## React-Router et les modules serveur
|
|
48
|
+
|
|
49
|
+
Dans la documentation de React-Router au sujet des **conventions des modules serveur**
|
|
50
|
+
(https://reactrouter.com/api/framework-conventions/server-modules), l'équipe **suggère explicitement d'utiliser `vite-env-only`** pour empêcher que des imports réservés au serveur ne fuient dans le bundle client.
|
|
51
|
+
|
|
52
|
+
Cependant, ces conventions s'appuient sur l'aliasing de Vite, les exports conditionnels et le tree-shaking pour éliminer le code réservé au serveur. Alors que l'aliasing et les exports conditionnels sont déjà appliqués, certains utilitaires basés sur Node sont encore présents dans des packages comme `@intlayer/core` à ce stade (même s'ils ne sont jamais importés côté client). Comme le tree-shaking n'a pas encore été exécuté, ces fonctions sont toujours analysées par Babel, et `vite-env-only` détecte leurs imports `node:` et génère un faux positif — alors qu'ils sont correctement purgés du bundle client final.
|
|
53
|
+
|
|
54
|
+
## Comment corriger / contourner
|
|
55
|
+
|
|
56
|
+
### Recommandation : Supprimer `vite-env-only`
|
|
57
|
+
|
|
58
|
+
Supprimez simplement le plugin. Dans de nombreux cas, vous n'en avez pas besoin — Vite gère déjà les imports client vs serveur via sa propre résolution.
|
|
59
|
+
|
|
60
|
+
Cela corrige la fausse erreur sur `node:fs` sans modification d'Intlayer.
|
|
61
|
+
|
|
62
|
+
### Valider la build finale à la place
|
|
63
|
+
|
|
64
|
+
Si vous souhaitez toujours vous assurer qu'aucune API Node intégrée ne se retrouve dans le client, faites-le **après la compilation**, par ex. :
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm build
|
|
68
|
+
grep -R "node:" dist/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
S'il n'y a aucun résultat, vos bundles client sont propres.
|
|
72
|
+
|
|
73
|
+
## Résumé
|
|
74
|
+
|
|
75
|
+
- `vite-env-only` peut générer une erreur sur `node:fs` car il vérifie trop tôt.
|
|
76
|
+
- Vite + Intlayer + les conventions des server modules de React-Router suppriment normalement correctement les références réservées au serveur.
|
|
77
|
+
- Supprimer le plugin ou vérifier la _sortie finale_ est généralement la meilleure solution.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-01-11
|
|
3
|
+
updatedAt: 2026-01-11
|
|
4
|
+
title: `vite-env-only` और Intlayer – false positive `node:fs` अस्वीकृत त्रुटि
|
|
5
|
+
description: vite-env-only यह क्यों रिपोर्ट करता है कि Intlayer + React-Router + Vite के साथ `node:fs` आयात अस्वीकृत है और इस स्थिति में क्या करना चाहिए।
|
|
6
|
+
keywords:
|
|
7
|
+
- intlayer
|
|
8
|
+
- vite
|
|
9
|
+
- react-router
|
|
10
|
+
- vite-env-only
|
|
11
|
+
- node:fs
|
|
12
|
+
- आयात अस्वीकृत
|
|
13
|
+
- एलियास
|
|
14
|
+
- क्लाइंट बंडल
|
|
15
|
+
slugs:
|
|
16
|
+
- frequent-questions
|
|
17
|
+
- vite-env-only-node-fs-false-positive
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# vite-env-only Intlayer के साथ `node:fs` को अस्वीकार कर देता है
|
|
21
|
+
|
|
22
|
+
यदि आपने **vite-env-only** प्लगइन का उपयोग किया है (जैसा कि पुराने React-Router v7 सुझावों में उल्लेख है) और आप देखते हैं:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
|
|
26
|
+
Error: [vite-env-only] Import denied
|
|
27
|
+
|
|
28
|
+
* Denied by specifier pattern: /^node:/
|
|
29
|
+
* Importer: index.html
|
|
30
|
+
* Import: "node:fs"
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
…हालाँकि आपके क्लाइंट बंडल में **कोई `node:fs` नहीं है**, यह एक **false positive** है।
|
|
35
|
+
|
|
36
|
+
## कारण
|
|
37
|
+
|
|
38
|
+
`vite-env-only` Vite ग्राफ़ रिज़ॉल्यूशन के आरंभिक चरण में एक Babel-आधारित जाँच चलाता है, _इसके पहले_:
|
|
39
|
+
|
|
40
|
+
- अलायसिंग (Intlayer के browser बनाम node मैपिंग्स सहित),
|
|
41
|
+
- dead-code elimination,
|
|
42
|
+
- SSR बनाम क्लाइंट रिज़ॉल्यूशन,
|
|
43
|
+
- React-Router जैसे वर्चुअल मॉड्यूल।
|
|
44
|
+
|
|
45
|
+
Intlayer पैकेजों में ऐसा कोड होता है जो Node और ब्राउज़र दोनों पर काम कर सकता है। एक _मध्यवर्ती_ चरण में, `node:fs` जैसा Node बिल्ट-इन ग्राफ़ में दिखाई दे सकता है **पहले** कि Vite इसे क्लाइंट बिल्ड से हटा दे। `vite-env-only` यह देखकर तुरंत त्रुटि देता है, हालांकि अंतिम बंडल में यह मौजूद नहीं होता।
|
|
46
|
+
|
|
47
|
+
## React-Router और सर्वर मॉड्यूल
|
|
48
|
+
|
|
49
|
+
React-Router के दस्तावेज़ में **server module conventions**
|
|
50
|
+
(https://reactrouter.com/api/framework-conventions/server-modules), टीम **स्पष्ट रूप से `vite-env-only` का उपयोग करने का सुझाव देती है** ताकि server-only imports क्लाइंट बंडल में लीक न हों।
|
|
51
|
+
|
|
52
|
+
हालाँकि, ये कन्वेंशन्स Vite की aliasing, conditional exports, और tree-shaking पर निर्भर करते हैं ताकि server-only कोड हटाया जा सके। जबकि aliasing और conditional exports पहले से लागू हैं, कुछ Node-आधारित utilities उस चरण में अभी भी पैकेजेज़ जैसे `@intlayer/core` में मौजूद रहते हैं (हालाँकि वे क्लाइंट पर कभी import नहीं होते)। क्योंकि tree-shaking अभी तक नहीं चला है, वे फ़ंक्शंस अभी भी Babel द्वारा पार्स किए जाते हैं, और `vite-env-only` उनके `node:` imports का पता लगा कर एक false positive उठाता है — भले ही वे अंतिम क्लाइंट बंडल से सही तरीके से हटाए जा चुके हों।
|
|
53
|
+
|
|
54
|
+
## कैसे ठीक करें / वर्कअराउंड
|
|
55
|
+
|
|
56
|
+
### अनुशंसित: `vite-env-only` हटाएँ
|
|
57
|
+
|
|
58
|
+
सिर्फ़ प्लगइन को हटा दें। कई मामलों में इसकी आवश्यकता नहीं होती — Vite अपने resolution के माध्यम से क्लाइंट बनाम सर्वर इम्पोर्ट्स को पहले से ही संभालता है।
|
|
59
|
+
|
|
60
|
+
यह Intlayer में किसी बदलाव के बिना `node:fs` पर दिखने वाली false positive को ठीक कर देता है।
|
|
61
|
+
|
|
62
|
+
### इसके बजाय अंतिम बिल्ड को सत्यापित करें
|
|
63
|
+
|
|
64
|
+
अगर आप फिर भी यह सुनिश्चित करना चाहते हैं कि क्लाइंट में कोई Node built-ins न हो, तो इसे **बिल्ड के बाद** करें, उदाहरण के लिए:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm build
|
|
68
|
+
grep -R "node:" dist/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
यदि कोई परिणाम नहीं मिलता है, तो आपके क्लाइंट बंडल्स साफ़ हैं।
|
|
72
|
+
|
|
73
|
+
## सारांश
|
|
74
|
+
|
|
75
|
+
- `vite-env-only` `node:fs` पर त्रुटि दे सकता है क्योंकि यह बहुत जल्दी जाँच करता है।
|
|
76
|
+
- Vite + Intlayer + React-Router के server modules conventions सामान्यतः server-only संदर्भों को सही ढंग से हटा देते हैं।
|
|
77
|
+
- प्लगइन को हटाना या _final output_ की जाँच करना आम तौर पर सबसे अच्छा समाधान होता है।
|