# Пакеты @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 в пакете, либо обновить импорты и использование в репозитории сервера.