gpt4 book ai didi

symfony - Assetic dump 在我的 Symfony 应用程序中找不到 uglifycss

转载 作者:行者123 更新时间:2023-12-04 15:42:57 25 4
gpt4 key购买 nike

对于我的 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 .有谁知道这里发生了什么?

最佳答案

我似乎工作的最终配置是这样的:

  • 设置 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
  • 转储 Assets
    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: 变量移动到 config_prod.yml 并重建缓存“cache:clear”时,它找到了设置并将其拉入。但是,节点仍然作为“/usr/bin/node”传递。查看丑化过滤器的源代码,如果节点变量为空,它将只使用丑化路径。因此,要使用 uglifycss 的二进制文件,只需将 node 设置为 null。

    关于symfony - Assetic dump 在我的 Symfony 应用程序中找不到 uglifycss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17943252/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com