infrajs / config-search
Requires
- infrajs/cache: ~1
- infrajs/load: ~1
- infrajs/path: ~1
README
#Короткие адреса Короткие адреса до папок расширений поддерживающих конфигурационные файлы .infra.json
Поиск файла $src = Path::theme('-plugin/test.js')
с коротким адресом "-" будет осуществляться в папках с .infra.json.
Например, если в папке vendor/name/plugin/ есть .infra.json и test.js, то путь -plugin/test.js приведён к файлу vendor/name/plugin/test.js
Также в .infra.json в корне проекта можно использовать короткое имя расширения, без указания полного адреса vendor/name/plugin.
{ "plugin":{ "js":"test.js" } }
Файлы и папки всех установленных расширений с конфигурационным файлом .infra.json будут доступны по короткому адресу -plugin/folders/file.ext, где "-" скрывает часть адреса, варианты которого и подготавливает данное расширение.
Расширение расширяет функциональность infrajs/path. В массив Path::$conf['search'] добавляются адреса производителей поддерживающих конфигурацию через файлы .infra.json.
Использование
Расширение устанавливается автоматически как зависимость infrajs/router настроек не требуется.
При самостоятельном использовании
Для тех кто знает что делает...
\infrajs\config\Search::init(); //Наполнит Path::$conf['search'] новыми путями
Описание
Путь для поиска файлов c - по умолчанию указан только один vendor/infrajs/ и его достаточно, чтобы собрать все нужные зависимости.
Определённые пути кэшируются, кэш привязан к дате изменения файла composer.lock
Принцип работы - пробежаться по всем папкам проекта и все папки папок с файлами .infra.json добавить в config.path.search.
- .infra.json - корень, уже итак обработан, игнорируется
- dir/.infra.json - нет явного производителя, игнорируется, путь итак сработает -dir/file.ext
- dir1/dir2/.infra.json - в search будет добавлен путь dir1/ и будет работать путь "-dir2/file.ext"
- dir1/dir2/dir3/.infra.json - в search будет добавлен путь dir1/dir2/ и будет работать путь "-dir3/file.ext"
Найденные пути добавляются в конец config.path.search.
Есть папки которые содержат часто-подключаемые файлы, но не содержащие .infra.json
- vendor/components/,
- vendor/twbs/,
- bower_components/ Можно указывать вручную в корне проекта .infra.json
{ "path":{ "search":[ "vendor/components/", "vendor/twbs/", "bower_components/" ] } }
Отключить расширение
Без расширения config-search все пути нужно буедет перечислить вручную в корневом .infra.json. Отключить использование этого расширения если оно установлено можно параметром off в корневом .infra.json
{ "config-search":{ "off":true } }