Каков наилучший способ включить проект jQuery для symfony с использованием composer и активов
У меня установлен JQuery с композитором.
Теперь JQuery находится в vendor/components/jquery
каталог.
Я пытался включить это в /app/config/config.yml
assetic:
debug: "%kernel.debug%"
use_controller: false
filters:
cssrewrite: ~
assets:
jquery: %kernel.root_dir%/../vendor/components/jquery/jquery.min.js
Если я запускаю команду:
php app/console assetic:dump
я получил
[RuntimeException]
The source file "/home/user/project/app/current/app/../web/vendor/components/jquery/jquery.min.js" does not exist.
Причина, по которой сборщик все еще смотрит в /web/
каталог, который является неправильным. Как я могу изменить это так, чтобы это выглядело в /vendor/
каталог? Кроме того, я не хочу помещать файлы jquery в общедоступную папку комплектов, так как это может нарушить весь смысл получения правильных версий библиотек вендора через composer.
2 ответа
Я не большой поклонник установки jquery в каталоге vendor в Symfony, так как это не библиотека PHP. Композитор и vendor
Каталог должен использоваться только для зависимостей PHP. Вы должны отделить часть внешнего интерфейса от части внутреннего интерфейса. Все js, css и другие активы должны идти куда-то еще.
Поэтому у вас есть 2 варианта:
- Если вы хотите иметь отдельные ресурсы для каждого пакета, поместите ваши ресурсы, которые вы используете для внешнего интерфейса, в публичный каталог вашего пакета: например, поместите свой
jquery.min.js
вResources/public/js
папка вашего комплекта.
Затем запустите команду php app/console assets:install
, это скопирует ваши файлы js в web/bundles/yourbundle/js/
каталог.
Наконец использовать <script type="text/javascript" src="{{ asset('yourbundle/js/jquery.min.js') }}"></script>
в ваш файл ветки, чтобы добавить jquery.
- Если у вас есть общие ресурсы для всех ваших пакетов, поместите их непосредственно в
web
папка, например:web/js
,web/css
,web/img
... а потом пользуйся<script type="text/javascript" src="{{ asset('js/jquery.min.js') }}"></script>
в вашем шаблоне ветки.
Следуя ссылкам из комментариев и повторяя другие ответы, это было довольно легко. Все пропало было
composer require robloach/component-installer
больше информации о robloach/component-installer
Затем добавьте эту строку вручную composer.json
"config": {
#...
"component-dir": "web/assets",
#...
},
Предполагается, что у вас уже есть
composer require components/jquery
Возможно, вам придется повторить команду
composer install
Теперь он создаст каталог /web/assets/jquery
со всеми файлами, которые будут легко включены.