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