@luca324/yandex-evershop-s3
v2.0.0
Published
Patched version of @evershop/s3_file_storage with Yandex Cloud S3 support
Maintainers
Readme
@luca324/yandex-evershop-s3
Патч для пакета @evershop/s3_file_storage с поддержкой Yandex Cloud S3.
Описание
Этот пакет предоставляет патч-файл, который модифицирует @evershop/s3_file_storage для работы с Yandex Cloud Object Storage (S3-совместимое хранилище). Патч добавляет поддержку кастомного endpoint и исправляет генерацию URL для корректной работы с Yandex Cloud.
Требования
- Node.js проект с установленным
@evershop/s3_file_storage patch-packageдолжен быть установлен в вашем проекте как зависимость разработки- Скрипт
postinstallдолжен быть настроен вpackage.jsonдля автоматического применения патчей
Установка
Шаг 1: Установите пакет
Установите пакет через npm или yarn:
npm install @luca324/yandex-evershop-s3или
yarn add @luca324/yandex-evershop-s3Шаг 2: Скопируйте патч в корень проекта
После установки пакета, патч-файл будет находиться в node_modules/@luca324/yandex-evershop-s3/patches/. Вам нужно скопировать его в папку patches/ в корне вашего проекта.
Для Linux/Mac:
mkdir -p patches
cp node_modules/@luca324/yandex-evershop-s3/patches/@evershop+s3_file_storage+2.0.0.patch patches/Шаг 3: Убедитесь, что patch-package настроен
Убедитесь, что в вашем package.json есть:
patch-packageвdevDependencies:
{
"devDependencies": {
"patch-package": "^8.0.1"
}
}- Скрипт
postinstallв секцииscripts:
{
"scripts": {
"postinstall": "patch-package"
}
}Если их нет, установите и добавьте:
npm install --save-dev patch-packageИ добавьте скрипт в package.json:
{
"scripts": {
"postinstall": "patch-package"
}
}Шаг 4: Примените патч
Патч будет применен автоматически при следующей установке зависимостей:
npm installИли примените патч вручную:
npx patch-packageЧто изменяет патч
Патч модифицирует следующие файлы в @evershop/s3_file_storage:
1. Конфигурация S3Client
- Добавляет поддержку кастомного
endpoint(для Yandex Cloud S3) - Включает
forcePathStyle: trueдля корректной работы с Yandex Cloud
2. Генерация URL файлов
- Изменяет формат URL с AWS-стиля (
https://bucket.s3.amazonaws.com/path) на path-style (https://storage.yandexcloud.net/bucket/path) - Использует переменную окружения
AWS_ENDPOINTдля формирования URL
3. Парсинг URL
- Исправляет извлечение имени бакета и ключа объекта из URL для Yandex Cloud формата
- Корректно обрабатывает path-style URLs
Измененные файлы:
dist/services/awsFileBrowser.js- просмотр файловdist/services/awsFileDeleter.js- удаление файловdist/services/awsFileUploader.js- загрузка файловdist/services/awsFolderCreator.js- создание папокdist/subscribers/product_image_added/awsGenerateProductImageVariant.js- генерация вариантов изображений- Соответствующие TypeScript исходники в
src/
Переменные окружения
Для работы с Yandex Cloud S3 добавьте следующие переменные в ваш .env файл:
# ID ключа доступа (можно получить в интерфейсе Yandex Cloud)
AWS_ACCESS_KEY_ID=your_access_key_id
# Секретный ключ доступа
AWS_SECRET_ACCESS_KEY=your_secret_access_key
# Имя бакета в Yandex Cloud
AWS_BUCKET_NAME=your_bucket_name
# Регион (для Yandex Cloud всегда используйте ru-central1)
AWS_REGION=ru-central1
# Endpoint для Yandex Cloud S3
AWS_ENDPOINT=https://storage.yandexcloud.net
# Обязательно для Yandex Cloud S3
AWS_S3_FORCE_PATH_STYLE=trueГде получить ключи доступа
- Перейдите в Yandex Cloud Console
- Откройте раздел "Сервисные аккаунты"
- Создайте сервисный аккаунт или используйте существующий
- Создайте статический ключ доступа для сервисного аккаунта
- Скопируйте
Access Key IDиSecret Access Key
Проверка работы
После применения патча убедитесь, что:
- Патч применен успешно (проверьте вывод
npm installилиnpx patch-package) - Переменные окружения настроены корректно
- Бакет существует и доступен с указанными ключами
- Приложение корректно загружает и отображает файлы из Yandex Cloud S3
Обновление патча
Если вы обновили версию @evershop/s3_file_storage, вам может потребоваться обновить патч:
- Удалите старый патч из папки
patches/ - Установите новую версию
@evershop/s3_file_storage - Скопируйте новый патч из
node_modules/@luca324/yandex-evershop-s3/patches/(если версия патча обновлена) - Примените патч снова
Устранение неполадок
Патч не применяется
- Убедитесь, что
patch-packageустановлен и скриптpostinstallнастроен - Проверьте, что патч находится в папке
patches/в корне проекта - Проверьте, что имя патча соответствует версии установленного
@evershop/s3_file_storage
Ошибки при работе с S3
- Проверьте правильность переменных окружения
- Убедитесь, что ключи доступа имеют необходимые права
- Проверьте, что бакет существует и доступен
- Убедитесь, что
AWS_ENDPOINTуказан какhttps://storage.yandexcloud.net
Лицензия
MIT © Luca324
