4.4 KiB
Пакеты @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: нужна организация/scopef7cloudили приватный 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".
Проверка после перехода
npm install— без ошибок.npm run build— сборка проходит.- Запуск приложений (файлы, настройки и т.д.) — без ошибок в консоли и в интерфейсе.
Если пакет меняет экспорты или сигнатуры, в коде сервера/приложений появятся ошибки при сборке или в рантайме — тогда нужно либо вернуть совместиый API в пакете, либо обновить импорты и использование в репозитории сервера.