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 и при выдаче npm ls, я вижу, что он правильно установлен.

Я также запустилnodejs в каталоге приложений и сделал require('less'), и он работал без ошибок.

Как правильно настроить assetic с помощью nodejs ?

4 2

4 ответа:

Для пользователей mac это

node: "/usr/local/bin/node"
node_paths: [/usr/local/lib/node_modules/]

Добавить

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/], Убедитесь, что у вас есть это. Обратите внимание, что теперь задано расположение, к которому скрипт может получить глобальный доступ.

Теперь это будет работать. Надеюсь, это кому-то поможет.

Найдено,

Я ввел в сервер как root (Да, я знаю, плохая практика), то я su webadmin!

Фокус в том, чтобы действительно войти в систему какwebadmin или su webadmin -l.

Я проверил, и это было проблемой.