Как получить массив путей к файлам?
Коллеги. Есть старая сборка не моя. Собрано на gulp v-3.9.1 && angularjs v-1.4.9
, Angularjs
вообще собирается через bower
, в общем все старое и не пригодное.
Смысл проблемы в том, что меня попросили написать функцию для слайдера, который будет собирать все фото из определенной папки в массив. Заказчики хотят просто менять или добавлять папки с фото и получать массив путей к этим картинкам. (Чтобы не формировать массив картинок в ручную , их более 60).
У меня была подобная задача тоже на angularjs v-1.8.2
сборка webpack-5
у меня даже был вопрос на эту тему и решение было таковым
const importImg = r => r.keys().forEach((s) => [].push(s));
console.log(importImg(require.context("../../../../img/slider/", true, /\.svg$/)));
Забыл отметить, что данная функция require.context(...
в данной сборке не работает
Подскажите как реализовать данную задачу на клиенте? Единственное, что придумал, это формировать массив на сервере и отправить на клиент. (это уже готово и работает).
Просто стало интересно можно ли это сделать только на клиенте?
Ответы (1 шт):
Насколько я понял, при изменении картинок пересобирается весь проект?
Решение спорное, но под него легко намутить костыль: перед сборкой выполняем команду
node -e "fs.writeFileSync('files.js', 'const files = ' + JSON.stringify(fs.readdirSync('.'), null, 2), 'utf8')"
а уже этот файл используем коде приложения (можно вместо глобальной константы сделать ангулярную или вообще намотать что угодно вокруг массива).
Проблема:
Если картинки могут добавлять разные люди, в этом файле могут возникать конфликты.
Возможные решения:
- добавить его в .gitignore
- при возникновении конфликтов спокойно аппрувить любой и перегенерировать
- научить гит самостоятельно перегенерировать файл вместо мёрджа