f7cloud_client/docs/F7CLOUD-PACKAGES.md
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

52 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Пакеты @f7cloud/* и совместимость
Сервер F7cloud использует npm-пакеты под scope **@f7cloud/** вместо @nextcloud/. Чтобы после перехода на свои пакеты приложения не перестали работать, пакеты @f7cloud/* должны оставаться **API-совместимыми** с оригинальными @nextcloud/*.
## Что уже сделано в репозитории
- В **package.json** зависимости и devDependencies переведены на `@f7cloud/*` (auth, axios, vue, files, dialogs, event-bus, l10n, logger и т.д.).
- Во всех исходниках (**core**, **apps**, **build**, **tests**) импорты заменены с `@nextcloud/...` на `@f7cloud/...`.
- После публикации пакетов @f7cloud/* на npm (или в свой registry) достаточно выполнить `npm install` и `npm run build`.
## Как сохранить работоспособность
### 1. Форк пакета (минимальные изменения)
При форке репозитория пакета Nextcloud (например, [nextcloud/vue](https://github.com/nextcloud/nextcloud-vue)) достаточно:
- Сменить в **package.json** только поле `"name"`: с `"@nextcloud/vue"` на `"@f7cloud/vue"`.
- Остальной код и экспорты **не менять** — тогда весь существующий код сервера и приложений продолжит работать без правок.
- Опубликовать пакет под scope `@f7cloud` (npm: нужна организация/scope `f7cloud` или приватный registry).
### 2. Постепенная переработка
Когда будете переписывать приложения или сами пакеты:
- **Сохраняйте совместиый публичный API** пакетов: те же имена экспортов, те же параметры и поведение, пока старый код их использует.
- Меняйте внутреннюю реализацию и добавляйте новые API по необходимости; старые импорты в сервере и приложениях тогда не сломаются.
### 3. Список пакетов, которые нужно опубликовать как @f7cloud/*
Из **package.json** сервера:
**dependencies:**
`@f7cloud/auth`, `@f7cloud/axios`, `@f7cloud/browser-storage`, `@f7cloud/browserslist-config`, `@f7cloud/calendar-availability-vue`, `@f7cloud/capabilities`, `@f7cloud/dialogs`, `@f7cloud/event-bus`, `@f7cloud/files`, `@f7cloud/initial-state`, `@f7cloud/l10n`, `@f7cloud/logger`, `@f7cloud/moment`, `@f7cloud/password-confirmation`, `@f7cloud/paths`, `@f7cloud/router`, `@f7cloud/sharing`, `@f7cloud/upload`, `@f7cloud/vue`.
**devDependencies:**
`@f7cloud/babel-config`, `@f7cloud/cypress`, `@f7cloud/eslint-config`, `@f7cloud/stylelint-config`, `@f7cloud/typings`, `@f7cloud/webpack-vue-config`.
**browserslist:**
`extends @f7cloud/browserslist-config`.
**Сейчас в package.json включены алиасы** вида `"@f7cloud/vue": "npm:@nextcloud/vue@^8.35.0"`: при `npm install` ставятся пакеты @nextcloud/*, но в node_modules они доступны как @f7cloud/*. Поэтому **`npm run build` работает без публикации своих пакетов.**
Когда опубликуете пакеты @f7cloud/*, замените в package.json алиасы на обычные версии, например `"@f7cloud/vue": "^8.35.0"`.
## Проверка после перехода
1. `npm install` — без ошибок.
2. `npm run build` — сборка проходит.
3. Запуск приложений (файлы, настройки и т.д.) — без ошибок в консоли и в интерфейсе.
Если пакет меняет экспорты или сигнатуры, в коде сервера/приложений появятся ошибки при сборке или в рантайме — тогда нужно либо вернуть совместиый API в пакете, либо обновить импорты и использование в репозитории сервера.