You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/recipes/svelte-support.md
+26Lines changed: 26 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,3 +58,29 @@ bun add -D rollup-plugin-svelte svelte svelte-preprocess
58
58
Чтобы сгенерировать `.d.ts` для компонентов Svelte, обычно используют пакет [`svelte2tsx`](https://www.npmjs.com/package/svelte2tsx). Рекомендуется применять специальный шаблон Svelte, в котором уже предусмотрен этап генерации деклараций на основе `svelte2tsx` после сборки.
59
59
60
60
:::
61
+
62
+
## Дистрибуция
63
+
64
+
В соответствии с практикой сообщества и руководством [Packaging](https://svelte.dev/docs/kit/packaging) для SvelteKit, не публикуйте предварительно скомпилированные JS-компоненты. Вместо этого распространяйте исходные `.svelte`‑файлы и позвольте инструментам сборки пользователей (например, Vite с `@sveltejs/vite-plugin-svelte`) компилировать их в их собственных проектах.
65
+
66
+
Почему не стоит публиковать предварительно скомпилированный JS:
67
+
68
+
- Совместимость версий. Предварительно собранный код зависит от конкретной версии компилятора и пакета `svelte/internal`; несовпадения могут привести к ошибкам при работе или гидрации на сервере (SSR).
69
+
- Согласованность SSR и гидрации. Различные параметры компиляции (`generate`, `hydratable`, `dev`, и т.п.) в библиотеке и приложении могут вызывать проблемы с гидрацией.
70
+
- Интеграция с инструментами. Исходные `.svelte`‑файлы позволяют использовать улучшенные возможности HMR, диагностику, оптимизацию CSS и tree‑shaking; при дистрибуции JS эти преимущества теряются.
71
+
- Упрощённая поддержка. Меньше переизданий при обновлении Svelte — пользователи сами компилируют библиотеку нужной им версией.
72
+
73
+
Когда стоит публиковать JS:
74
+
75
+
- Если вы поставляете артефакты, которые можно использовать вне Svelte (например, веб-компоненты с `customElement`).
76
+
- В сценариях, где используется CDN и отсутствует этап сборки на стороне потребителя.
77
+
78
+
Для подробной настройки упаковки (например, полей `exports`, `types`, `files`, `sideEffects`, подэкспортов и карт деклараций) см. официальное руководство.
79
+
80
+
::: tip
81
+
Основы работы с tsdown:
82
+
83
+
- Отметьте пакеты `svelte`/`svelte/*` как внешние (`external`) в конфигурации `tsdown` и добавьте `svelte` в `peerDependencies`.
84
+
- Используйте `rollup-plugin-svelte` для препроцессинга и интеграции, оставляя `.svelte`‑файлы в исходном виде при дистрибуции.
85
+
- Применяйте `svelte2tsx`, чтобы создавать `.d.ts`‑файлы, соответствующие вашим подэкспортам из `exports`.
Обратите внимание, что переменные окружения, определённые с помощью `--env.VAR_NAME`, могут быть доступны только как `import.meta.env.VAR_NAME` или `process.env.VAR_NAME`.
185
183
184
+
## `--env-file <file>`
185
+
186
+
Загружает переменные окружения из указанного файла. Если используется вместе с параметром `--env`, приоритет имеют переменные, переданные через `--env`.
187
+
188
+
:::tip
189
+
Чтобы избежать случайной утечки конфиденциальных данных, по умолчанию подставляются только переменные окружения с префиксом `TSDOWN_`. Это поведение можно изменить с помощью флага [`--env-prefix`](#env-prefix).
190
+
:::
191
+
192
+
```bash
193
+
tsdown --env-file .env.production
194
+
```
195
+
196
+
## `--env-prefix <prefix>` {#env-prefix}
197
+
198
+
При загрузке переменных окружения через `--env-file` включаются только те переменные, чьи имена начинаются с указанных префиксов.
0 commit comments