symfony2. 3 Настройка assetic с меньшим количеством
Я использую Symfony " 2.3.* "и я пытаюсь сделать assetic менее работающим фильтром. Я делаю все это в среде "dev".
Когда я выдаю config:dump-reference assetic
, я получаю следующий вывод:
assetic:
debug: %kernel.debug%
use_controller:
enabled: %kernel.debug%
profiler: false
read_from: %kernel.root_dir%/../web
write_to: %assetic.read_from%
java: /usr/bin/java
node: /usr/bin/node
node_paths: []
ruby: /usr/bin/ruby
sass: /usr/bin/sass
variables:
# Prototype
name: []
bundles:
# Defaults:
- FrameworkBundle
- SecurityBundle
- TwigBundle
- MonologBundle
- SwiftmailerBundle
- AsseticBundle
- DoctrineBundle
- SensioFrameworkExtraBundle
- FOSUserBundle
- JMSSerializerBundle
- YuccaPrerenderBundle
- WebProfilerBundle
- SensioDistributionBundle
- SensioGeneratorBundle
assets:
# Prototype
name:
inputs: []
filters: []
options:
# Prototype
name: []
filters:
# Prototype
name: []
twig:
functions:
# Prototype
name: []
Итак, мой конфиг выглядит так:
assetic:
debug: %kernel.debug%
use_controller: false
bundles:
- PlastoriaGiftoFrontBundle
#java: /usr/bin/java
node: "/usr/bin/nodejs"
node_paths: [ "/home/webadmin/websites/gifto/node_modules" ]
filters:
cssrewrite: ~
less: ~
closure:
jar: %kernel.root_dir%/Resources/java/compiler.jar
yui_css:
jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.8.jar
Чтобы проверить, что это работает, я открываю консоль Symfony и выпускаю cache:clear
Затем я иду в кэш dir (app/cache) и делаю rm -rf *
.
После того, как я вернусь в консоль Symfony и запущу эти две команды:
assets:install
assetic:dump
И меня приветствуют: следующее сообщение:
Сброс всех активов dev. Включен режим отладки. 13: 51: 22 [файл+] / home/webadmin/websites/gifto/app/../web / css / ac28136.CSS [AsseticExceptionFilterException] произошла ошибка во время выполнения: '/usr/bin/nodejs ''/tmp / assetic_lessjHtxDR ' вывод ошибки: модуль.js: 340 бросить подстраховаться; ^ Ошибка: не удается найти модуль "меньше" на работе.Модуль._resolveFilename (модуль.ИС: 338: 15)... (усечено)
В конфигурация для двоичного узла учитывается: An error occurred while running: '/usr/bin/nodejs'
По умолчанию используется значение /usr/bin/nodejs
.
npm ls
, я вижу, что он правильно установлен.
Я также запустилnodejs в каталоге приложений и сделал require('less')
, и он работал без ошибок.
Как правильно настроить assetic с помощью nodejs ?
4 ответа:
Добавить
assetic: node_paths: [/usr/lib/node_modules/]
В вашей конфигурации.файл yml.
/usr/lib/node_modules/
работает на Ubuntu.
Я использовал Centos с установкой cPanel. Я совершил ошибку, не поняв, что при запуске npm install less он будет находиться в каталоге, из которого я его вызвал, который в моем случае был корневым каталогом моего проекта.
В каком бы каталоге вы ни находились, когда устанавливали меньше, папка node_modules должна быть там. Однако это неправильное место для него.
Предположим, что вы находитесь в том же каталоге, из которого вы запустили установку... Выполните эту команду, чтобы переместить его в нужное место. расположение
mv node_modules /usr/local/lib/node_modules
Затем вам нужно добавить строку в вашу конфигурацию.yml
assetic: debug: '%kernel.debug%' use_controller: '%kernel.debug%' filters: cssrewrite: ~ uglifyjs2: # the path to the uglifyjs executable bin: /usr/bin/uglifyjs uglifycss: bin: /usr/bin/uglifycss less: node_paths: [/usr/local/lib/node_modules/] bin: /usr/bin/less
В моем случае я использую много других фильтров, но ключ здесь-это
node_paths: [/usr/local/lib/node_modules/]
, Убедитесь, что у вас есть это. Обратите внимание, что теперь задано расположение, к которому скрипт может получить глобальный доступ.Теперь это будет работать. Надеюсь, это кому-то поможет.