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

4.4 KiB
Raw Permalink Blame History

Пакеты @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) достаточно:

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