npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@luca324/yandex-evershop-s3

v2.0.0

Published

Patched version of @evershop/s3_file_storage with Yandex Cloud S3 support

Readme

@luca324/yandex-evershop-s3

npm version

Патч для пакета @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 есть:

  1. patch-package в devDependencies:
{
  "devDependencies": {
    "patch-package": "^8.0.1"
  }
}
  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

Где получить ключи доступа

  1. Перейдите в Yandex Cloud Console
  2. Откройте раздел "Сервисные аккаунты"
  3. Создайте сервисный аккаунт или используйте существующий
  4. Создайте статический ключ доступа для сервисного аккаунта
  5. Скопируйте Access Key ID и Secret Access Key

Проверка работы

После применения патча убедитесь, что:

  1. Патч применен успешно (проверьте вывод npm install или npx patch-package)
  2. Переменные окружения настроены корректно
  3. Бакет существует и доступен с указанными ключами
  4. Приложение корректно загружает и отображает файлы из Yandex Cloud S3

Обновление патча

Если вы обновили версию @evershop/s3_file_storage, вам может потребоваться обновить патч:

  1. Удалите старый патч из папки patches/
  2. Установите новую версию @evershop/s3_file_storage
  3. Скопируйте новый патч из node_modules/@luca324/yandex-evershop-s3/patches/ (если версия патча обновлена)
  4. Примените патч снова

Устранение неполадок

Патч не применяется

  • Убедитесь, что patch-package установлен и скрипт postinstall настроен
  • Проверьте, что патч находится в папке patches/ в корне проекта
  • Проверьте, что имя патча соответствует версии установленного @evershop/s3_file_storage

Ошибки при работе с S3

  • Проверьте правильность переменных окружения
  • Убедитесь, что ключи доступа имеют необходимые права
  • Проверьте, что бакет существует и доступен
  • Убедитесь, что AWS_ENDPOINT указан как https://storage.yandexcloud.net

Лицензия

MIT © Luca324

Репозиторий

https://github.com/Luca324/yandex-evershop-s3