gpt4 book ai didi

windows - 如何在Windows中将Assetic + sass与Symfony2配合使用?

转载 作者:行者123 更新时间:2023-12-03 11:03:48 25 4
gpt4 key购买 nike

我试图让Assetic在Symfony 2.0.11中运行,以便将sass用于css文件。

我已经在这个问题上摆弄了好几个小时,从我收集到的信息来看,当前的 Assets 版本(1.0.2)搞砸了,无法在Windows中工作。

我尝试将github上的assetic和asseticBundle更新到最新的Master版本,但是这些要求Symfony 2.1带来了很多变化并且不向后兼容(更不用说它也没有正式发布),因此这不是一个选择。

这篇symfony2 assetics yui compressor on windows (path syntax)帖子对这个问题提供了一些很好的见解,但是不幸的是,它建议对 Assets 库进行的更改不足以使其在我的环境中正常工作。

我在https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246chttps://github.com/kriswallsmith/assetic/issues/25中也发现了一些有趣的地方

最后,我所知道的是,我需要更改vendor/assetic/src/Assetic/Util/ProcessBuilder.php,也许要更改程序包中的其他文件,并且可能要在config.yml文件中添加一些信息(似乎添加了java或sass的路径可能会有帮助)。

我需要的是能够获得有效配置的人员,让我可以找到我所缺少的东西,或者理想情况下,使该死的东西起作用所需的步骤。

有人完成任务吗?

_____更新:
仍在挖掘中,现在只有3天了:/

新元素:

1/php5.3.8可能存在proc_open问题,并且按照https://bugs.php.net/bug.php?id=60120数据> 2048字节
从git存储库(https://github.com/symfony/symfony/issues/3216)获取symfony时,可能会产生此问题。
发出“git config --global core.autocrlf输入”并从git中重新获取所有内容,使我可以使用php5.3.10而不会崩溃。

2/https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246c看起来不错。
我对Process.php(cf https://github.com/kriswallsmith/assetic/issues/92)中的路径做了一些小的修改,但我不确定这是否相关。
无论如何,这时我从Assetic获得的命令行在Shell中工作并输出预期的CSS。

3/sass.bat(位于Ruby193\bin中)需要具有指向ruby.exe的绝对路径,以便进行更进一步的操作(我了解到这很困难,如果您使用var_dump并在以下位置杀死脚本,则只会看到错误消息)正确的地方!)

现在,情况似乎有所改善,但仍然无法与sass配合使用(我认为与其他一些过滤器配合使用会很好)
我设法在“$ data = fread($ pipe,8192);”处的Process.php中(第172行附近)隔离了该问题。 :脚本第二次在此位置通过,$ pipe指向第二个资源,它永远不会返回...并且php被卡住,并且出现了非常困难的时间(我需要杀死/重新启动wamp至少两次,以能够进行其他测试)

我真的不熟悉proc_open和流,并且在理解代码要在其中执行的操作时遇到了困难。

我希望这可以帮助下一个尝试使事情正常进行的人,并最终也帮助我的案子。
仍在寻求有关此事的支持!

_____更新:

进一步的测试使我意识到,当sass文件足够小时,我可以进行“php app/console assetic:dump”工作。在我看来,对于PHP5.3.10,实际的CSS规则(不包括变量定义和Mixins)需要小于4096字节,对于PHP 5.3.8甚至更少。
这指向https://bugs.php.net/bug.php?id=60120https://bugs.php.net/bug.php?id=51800中描述的proc_open错误

_____更新:

我试图安装php5.4来检查它是否解决了问题。
我花了一些时间才意识到此版本无法在我的计算机上运行的原因是因为还没有x64构建。
然后,我安装了32位版本的wamp,并轻松使用了php5.4。
最终结果:proc_open仍挂起:(
我在这里开始没有主意了...

演练:

因此,最终我使此功能生效,并认为我会尝试总结最重要的步骤,供以后的观众使用:

1.已安装Ruby 1.9.3和 compass 0.12

检查http://rubyinstaller.org/downloads/

使用将 compass 更新为0.12

"gem update --system"

接着
"gem install compass"

2.在 compass 中更改Compiler.rb

转到Ruby193\lib\ruby​​\gems\1.9.1\gems\compass-0.12.0\lib\compass
在第10行中,替换
self.from, self.to = File.expand_path(from), to


self.from, self.to = from.gsub('./', ''), to

/!\对于某些设置,可能是相反的方式,但是对于我要描述的设置,它就是这样。

3.将Assetic指向与symfony 2.0.11兼容的最新版本

像这样编辑deps文件:
[assetic]
git=http://github.com/kriswallsmith/assetic.git
;version=v1.0.2
version=ac71449e46bed22c276da26bf54ab2f733b3801d
[AsseticBundle]
git=http://github.com/symfony/AsseticBundle.git
target=/bundles/Symfony/Bundle/AsseticBundle
;version=v1.0.1
version=da4a46ce37557dcf3068b8493b12bdbbe47455e2

/!\,您还需要在deps.lock文件中删除对特定版本的引用!

并发出“php bin/vendors安装”。

4.更改您的config.yml

这是我现在的样子:
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: false
# java: /usr/bin/java
filters:
compass:
bin: e:\outils\Ruby193\bin\compass.bat

5.在 compass .bat/sass.bat中使用绝对路径

转到您的Ruby193\bin目录,然后编辑 compass .bat以设置ruby.exe的绝对路径(在使用sass.bat时也是如此)

6.更改调用模板

这是我现在的样子:
{% stylesheets filter='compass' output='css/*.css'
'@LndBimBundle/Resources/public/css/main.scss'
%}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}

测试:

为了进行测试,您可以使用
php app/console assetic:dump --verbose --no-debug

这样,如果您像我一样陷入无限循环,则只需ctrl + C,这将使测试方式比在浏览器中更高效

/!\您绝对需要使用--no-debug,否则您的css中将出现一堆不需要的行,看起来像:
@media -sass-debug-info{filename{font-family:file\:\/\/C\:\/Users\/Mattso\/AppData\/Local\/Temp\/ass9DBF\.tmp\.scss}line{font-family:\0000359}}

您可以使用
die($this->commandline);

在运行方法中
vendor\assetic\src\Assetic\Util\Process.php

向您显示当前命令行并进行测试。

我的当前看起来像这样:
cmd /V:ON /E:ON /C ""e:\outils\Ruby193\bin\compass.bat" "compile" "C:\Users\Mattso\AppData\Local\Temp" "--config" "C:\Users\Mattso\AppData\Local\Temp\ass59BB.tmp" "--sass-dir" "" "--css-dir" "" "C:\Users\Mattso\AppData\Local\Temp\ass59BC.tmp.scss""

然后,您只需在cli中键入“php app/console assetic:dump --no-debug”即可在web\css中创建CSS文件并刷新您的网站页面。等等...瞧! (希望!)

注意:您可能已经注意到,我使用的是CompassFilter而不是SassFilter。那是因为它做同样的事情(甚至更多),并且实际上可以做我们期望得到的事情。如果有人可以找到如何修复SassFilter的方法,那就太好了。同时,我已经在此上花费了太多时间。

由于这种疯狂,我已经拉了好几天了,希望这篇文章对其他人的心理健康有所帮助;)

最佳答案

请查看我对以下问题的回答:Windows下如何在Symfony2中使用SCSS过滤器?:https://stackoverflow.com/a/9658410/3765

这是对我尝试使Assetic在Windows上花费的时间的全面介绍。

基于your example-您不需要添加cssrewrite过滤器。这是我使用Twig的 compass 的方法:

{% stylesheets filter='compass' output='css/compiled/*.css' 'css/example.scss' %}
<link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}

关于windows - 如何在Windows中将Assetic + sass与Symfony2配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9626777/

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