Estoy usando Symfony “2.3. *” E bash hacer que Assetic funcione menos el filtro. Hago todo esto en el entorno “dev”.
Cuando config:dump-reference assetic
el config:dump-reference assetic
obtengo el siguiente resultado:
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: []
Por lo tanto, mi configuración se ve como:
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
Para probar que funciona, abro la Consola de Symfony y emito cache:clear
Luego voy al directorio de caché (app / caché) y hago rm -rf *
. Después de volver a la consola de Symfony y lanzar estos dos comandos:
assets:install assetic:dump
Y me saludan con el siguiente mensaje:
Volcar todos los activos de desarrollo. El modo de depuración está activado. 13:51:22 [archivo +] /home/webadmin/websites/gifto/app/../web/css/ac28136.css [Assetic \ Exception \ FilterException] Ocurrió un error al ejecutar: ‘/ usr / bin / nodejs’ Salida de error ‘/ tmp / assetic_lessjHtxDR’: module.js: 340 throw err; ^ Error: no se puede encontrar el módulo ‘menos’ en Function.Module._resolveFilename (module.js: 338: 15) … (truncado)
La configuración para el nodo binario se tiene en cuenta: An error occurred while running: '/usr/bin/nodejs'
Por defecto, el valor es /usr/bin/nodejs
.
No puedo entender lo que está mal. Instalé el módulo de nodo “menos” en la aplicación usando npm y cuando npm ls
, puedo ver que está correctamente instalado.
También lancé nodejs en el directorio de la aplicación e hice un require('less')
y funcionó sin error.
¿Cuál es la forma correcta de configurar assetic con nodejs?
Para usuarios de mac esto es
node: "/usr/local/bin/node" node_paths: [/usr/local/lib/node_modules/]
Añadir
assetic: node_paths: [/usr/lib/node_modules/]
en su archivo config.yml
/usr/lib/node_modules/
trabaja para Ubuntu.
Estaba usando Centos con una instalación de cPanel. Cometí el error de no darme cuenta cuando ejecutas npm install menos de lo que sería en el directorio desde el que llamé, que en mi caso era el directorio raíz de mi proyecto.
Cualquiera que sea el directorio en el que estaba cuando instaló menos la carpeta node_modules debería estar allí. Este es el lugar equivocado para ello sin embargo.
Suponiendo que se encuentre en el mismo directorio desde el que ejecutó la instalación … Ejecute este comando para moverlo a la ubicación correcta
mv node_modules /usr/local/lib/node_modules
Entonces necesitas agregar una línea a tu config.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
En mi caso, estoy usando muchos otros filtros, pero la clave aquí son las node_paths: [/usr/local/lib/node_modules/]
, asegúrate de tener eso. Observe que ahora está establecido en una ubicación a la que el script puede acceder globalmente.
Ahora funcionará. Espero que esto ayude a alguien.
Encontró,
Ingresé en el servidor como root (Sí, lo sé, mala práctica) y luego su webadmin
.
El truco es realmente iniciar sesión como webadmin o su webadmin -l
.
Lo probé y fue el problema.