@luca324/yandex-evershop-s3 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +155 -26
- package/package.json +2 -14
package/README.md
CHANGED
|
@@ -2,59 +2,188 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/js/%40luca324%2Fyandex-evershop-s3)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Патч для пакета `@evershop/s3_file_storage` с поддержкой Yandex Cloud S3.
|
|
6
|
+
|
|
7
|
+
## Описание
|
|
8
|
+
|
|
9
|
+
Этот пакет предоставляет патч-файл, который модифицирует `@evershop/s3_file_storage` для работы с Yandex Cloud Object Storage (S3-совместимое хранилище). Патч добавляет поддержку кастомного endpoint и исправляет генерацию URL для корректной работы с Yandex Cloud.
|
|
10
|
+
|
|
11
|
+
## Требования
|
|
12
|
+
|
|
13
|
+
- Node.js проект с установленным `@evershop/s3_file_storage`
|
|
14
|
+
- `patch-package` должен быть установлен в вашем проекте как зависимость разработки
|
|
15
|
+
- Скрипт `postinstall` должен быть настроен в `package.json` для автоматического применения патчей
|
|
6
16
|
|
|
7
17
|
## Установка
|
|
8
18
|
|
|
19
|
+
### Шаг 1: Установите пакет
|
|
20
|
+
|
|
21
|
+
Установите пакет через npm или yarn:
|
|
22
|
+
|
|
9
23
|
```bash
|
|
10
24
|
npm install @luca324/yandex-evershop-s3
|
|
11
25
|
```
|
|
12
26
|
|
|
13
|
-
|
|
27
|
+
или
|
|
28
|
+
|
|
14
29
|
```bash
|
|
15
30
|
yarn add @luca324/yandex-evershop-s3
|
|
16
31
|
```
|
|
17
32
|
|
|
18
|
-
|
|
33
|
+
### Шаг 2: Скопируйте патч в корень проекта
|
|
19
34
|
|
|
20
|
-
|
|
35
|
+
После установки пакета, патч-файл будет находиться в `node_modules/@luca324/yandex-evershop-s3/patches/`. Вам нужно скопировать его в папку `patches/` в корне вашего проекта.
|
|
21
36
|
|
|
22
|
-
|
|
23
|
-
|
|
37
|
+
**Для Linux/Mac:**
|
|
38
|
+
```bash
|
|
39
|
+
mkdir -p patches
|
|
40
|
+
cp node_modules/@luca324/yandex-evershop-s3/patches/@evershop+s3_file_storage+2.0.0.patch patches/
|
|
41
|
+
```
|
|
24
42
|
|
|
25
|
-
|
|
43
|
+
### Шаг 3: Убедитесь, что patch-package настроен
|
|
26
44
|
|
|
27
|
-
|
|
28
|
-
добавьте в файл .env следующие переменные:
|
|
45
|
+
Убедитесь, что в вашем `package.json` есть:
|
|
29
46
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
47
|
+
1. `patch-package` в `devDependencies`:
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"patch-package": "^8.0.1"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
37
54
|
```
|
|
38
55
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
56
|
+
2. Скрипт `postinstall` в секции `scripts`:
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"scripts": {
|
|
60
|
+
"postinstall": "patch-package"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
42
64
|
|
|
43
|
-
|
|
65
|
+
Если их нет, установите и добавьте:
|
|
44
66
|
|
|
45
67
|
```bash
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
cd yandex-evershop-s3
|
|
68
|
+
npm install --save-dev patch-package
|
|
69
|
+
```
|
|
49
70
|
|
|
50
|
-
|
|
71
|
+
И добавьте скрипт в `package.json`:
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"scripts": {
|
|
75
|
+
"postinstall": "patch-package"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Шаг 4: Примените патч
|
|
81
|
+
|
|
82
|
+
Патч будет применен автоматически при следующей установке зависимостей:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
51
85
|
npm install
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Или примените патч вручную:
|
|
52
89
|
|
|
53
|
-
|
|
54
|
-
npx patch-package
|
|
90
|
+
```bash
|
|
91
|
+
npx patch-package
|
|
55
92
|
```
|
|
56
93
|
|
|
94
|
+
## Что изменяет патч
|
|
95
|
+
|
|
96
|
+
Патч модифицирует следующие файлы в `@evershop/s3_file_storage`:
|
|
97
|
+
|
|
98
|
+
### 1. **Конфигурация S3Client**
|
|
99
|
+
- Добавляет поддержку кастомного `endpoint` (для Yandex Cloud S3)
|
|
100
|
+
- Включает `forcePathStyle: true` для корректной работы с Yandex Cloud
|
|
101
|
+
|
|
102
|
+
### 2. **Генерация URL файлов**
|
|
103
|
+
- Изменяет формат URL с AWS-стиля (`https://bucket.s3.amazonaws.com/path`) на path-style (`https://storage.yandexcloud.net/bucket/path`)
|
|
104
|
+
- Использует переменную окружения `AWS_ENDPOINT` для формирования URL
|
|
105
|
+
|
|
106
|
+
### 3. **Парсинг URL**
|
|
107
|
+
- Исправляет извлечение имени бакета и ключа объекта из URL для Yandex Cloud формата
|
|
108
|
+
- Корректно обрабатывает path-style URLs
|
|
109
|
+
|
|
110
|
+
### Измененные файлы:
|
|
111
|
+
- `dist/services/awsFileBrowser.js` - просмотр файлов
|
|
112
|
+
- `dist/services/awsFileDeleter.js` - удаление файлов
|
|
113
|
+
- `dist/services/awsFileUploader.js` - загрузка файлов
|
|
114
|
+
- `dist/services/awsFolderCreator.js` - создание папок
|
|
115
|
+
- `dist/subscribers/product_image_added/awsGenerateProductImageVariant.js` - генерация вариантов изображений
|
|
116
|
+
- Соответствующие TypeScript исходники в `src/`
|
|
117
|
+
|
|
118
|
+
## Переменные окружения
|
|
119
|
+
|
|
120
|
+
Для работы с Yandex Cloud S3 добавьте следующие переменные в ваш `.env` файл:
|
|
121
|
+
|
|
122
|
+
```env
|
|
123
|
+
# ID ключа доступа (можно получить в интерфейсе Yandex Cloud)
|
|
124
|
+
AWS_ACCESS_KEY_ID=your_access_key_id
|
|
125
|
+
|
|
126
|
+
# Секретный ключ доступа
|
|
127
|
+
AWS_SECRET_ACCESS_KEY=your_secret_access_key
|
|
128
|
+
|
|
129
|
+
# Имя бакета в Yandex Cloud
|
|
130
|
+
AWS_BUCKET_NAME=your_bucket_name
|
|
131
|
+
|
|
132
|
+
# Регион (для Yandex Cloud всегда используйте ru-central1)
|
|
133
|
+
AWS_REGION=ru-central1
|
|
134
|
+
|
|
135
|
+
# Endpoint для Yandex Cloud S3
|
|
136
|
+
AWS_ENDPOINT=https://storage.yandexcloud.net
|
|
137
|
+
|
|
138
|
+
# Обязательно для Yandex Cloud S3
|
|
139
|
+
AWS_S3_FORCE_PATH_STYLE=true
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Где получить ключи доступа
|
|
143
|
+
|
|
144
|
+
1. Перейдите в [Yandex Cloud Console](https://console.cloud.yandex.ru/)
|
|
145
|
+
2. Откройте раздел "Сервисные аккаунты"
|
|
146
|
+
3. Создайте сервисный аккаунт или используйте существующий
|
|
147
|
+
4. Создайте статический ключ доступа для сервисного аккаунта
|
|
148
|
+
5. Скопируйте `Access Key ID` и `Secret Access Key`
|
|
149
|
+
|
|
150
|
+
## Проверка работы
|
|
151
|
+
|
|
152
|
+
После применения патча убедитесь, что:
|
|
153
|
+
|
|
154
|
+
1. Патч применен успешно (проверьте вывод `npm install` или `npx patch-package`)
|
|
155
|
+
2. Переменные окружения настроены корректно
|
|
156
|
+
3. Бакет существует и доступен с указанными ключами
|
|
157
|
+
4. Приложение корректно загружает и отображает файлы из Yandex Cloud S3
|
|
158
|
+
|
|
159
|
+
## Обновление патча
|
|
160
|
+
|
|
161
|
+
Если вы обновили версию `@evershop/s3_file_storage`, вам может потребоваться обновить патч:
|
|
162
|
+
|
|
163
|
+
1. Удалите старый патч из папки `patches/`
|
|
164
|
+
2. Установите новую версию `@evershop/s3_file_storage`
|
|
165
|
+
3. Скопируйте новый патч из `node_modules/@luca324/yandex-evershop-s3/patches/` (если версия патча обновлена)
|
|
166
|
+
4. Примените патч снова
|
|
167
|
+
|
|
168
|
+
## Устранение неполадок
|
|
169
|
+
|
|
170
|
+
### Патч не применяется
|
|
171
|
+
|
|
172
|
+
- Убедитесь, что `patch-package` установлен и скрипт `postinstall` настроен
|
|
173
|
+
- Проверьте, что патч находится в папке `patches/` в корне проекта
|
|
174
|
+
- Проверьте, что имя патча соответствует версии установленного `@evershop/s3_file_storage`
|
|
175
|
+
|
|
176
|
+
### Ошибки при работе с S3
|
|
177
|
+
|
|
178
|
+
- Проверьте правильность переменных окружения
|
|
179
|
+
- Убедитесь, что ключи доступа имеют необходимые права
|
|
180
|
+
- Проверьте, что бакет существует и доступен
|
|
181
|
+
- Убедитесь, что `AWS_ENDPOINT` указан как `https://storage.yandexcloud.net`
|
|
182
|
+
|
|
57
183
|
## Лицензия
|
|
58
184
|
|
|
59
185
|
MIT © [Luca324](https://github.com/Luca324)
|
|
60
186
|
|
|
187
|
+
## Репозиторий
|
|
188
|
+
|
|
189
|
+
[https://github.com/Luca324/yandex-evershop-s3](https://github.com/Luca324/yandex-evershop-s3)
|
package/package.json
CHANGED
|
@@ -1,25 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luca324/yandex-evershop-s3",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Patched version of @evershop/s3_file_storage with Yandex Cloud S3 support",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"prepare": "patch-package",
|
|
9
|
-
"postinstall": "patch-package"
|
|
10
|
-
},
|
|
11
|
-
"dependencies": {
|
|
12
|
-
"@evershop/s3_file_storage": "2.0.0",
|
|
13
|
-
"patch-package": "^8.0.1"
|
|
14
|
-
},
|
|
15
5
|
"peerDependencies": {
|
|
16
6
|
"@evershop/s3_file_storage": "^2.0.0"
|
|
17
7
|
},
|
|
18
8
|
"files": [
|
|
19
|
-
"dist/",
|
|
20
9
|
"patches/",
|
|
21
|
-
"README.md"
|
|
22
|
-
"LICENSE"
|
|
10
|
+
"README.md"
|
|
23
11
|
],
|
|
24
12
|
"keywords": [
|
|
25
13
|
"evershop",
|