对于我的prod环境,我想使用如下配置的UglifyCSS过滤器(config_prod.yml):
assetic:
filters:
uglifycss:
node: /usr/bin/env node
bin: /usr/local/bin/uglifycss
apply_to: "\.css$"
但每当我跑
php app/console assetic:dump --env=prod --no-debug
我收到此错误消息:
[Assetic\Exception\FilterException]
An error occurred while running:
'/usr/local/bin/node' '/usr/bin/uglifycss' '/tmp/inputtyeA2H'
Error Output:
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module '/usr/bin/uglifycss'
at Function._resolveFilename (module.js:332:11)
at Function._load (module.js:279:25)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:40)
很明显,Assetic正在/usr/bin
中寻找uglifycss,尽管我将其配置为使用不同的路径/usr/local/bin
。有谁知道这里发生了什么?
答案 0 :(得分:8)
我的最终配置似乎有效:
设置config_prod
app/config/config_prod.yml
assetic:
filters:
uglifycss:
bin: %kernel.root_dir%/Resources/node_modules/.bin/uglifyjs
node: null
apply_to: '*.css$'
不要在config.yml中添加任何关于uglify的内容。将它们留在config_(env).yml文件
重建缓存
app/console cache:clear --env=prod --no-debug
转储资产
app/console assetic:dump --env=prod --no-debug
我怎么知道这个:
我遇到了这个问题,并设法解决了这个问题。我认为我的设置可能有点不同,我的uglify配置分为app / config.yml和app / config_prod.yml
我的配置与:http://symfony.com/doc/current/cookbook/assetic/uglifyjs.html完全相同 :
app/config/config.yml
assetic:
filters:
uglifycss:
bin: %kernel.root_dir%/Resources/node_modules/.bin/uglifyjs
app/config/config_prod.yml
assetic:
filters:
uglifycss:
apply_to: "*.css$"
我发现的是,Symfony在构建缓存时忽略了config.yml中的变量。您可以通过查看app / cache / prod / appProdProjectContainer.php并搜索“uglifycss”来查看它找到的内容。我看起来像这样:
protected function getAssetic_Filter_UglifycssService()
{
$this->services['assetic.filter.uglifycss'] = $instance = new \Assetic\Filter\UglifyCssFilter('/usr/bin/uglifycss', '/usr/bin/node');
当我将bin:variable移动到config_prod.yml并重建缓存“cache:clear”时,它找到了设置并将其拉入。但是,节点仍然作为'/ usr / bin / node'传递。查看Uglify过滤器的源代码,如果节点变量为null,它将使用JUST uglify路径。因此,要使用uglifycss的二进制文件,只需将node设置为null。
答案 1 :(得分:1)
如果您安装了uglifycss的二进制文件,则无需指定节点的路径。
我很确定
assetic:
filters:
uglifycss:
bin: /usr/local/bin/uglifycss
apply_to: "\.css$"
应该这样做。
答案 2 :(得分:1)
只需制作符号链接=)
ln -s /usr/local/bin/uglifycss /usr/bin/uglifycss
不那么脏,100%工作=)