18

css ファイルに sass を使用するために、Symfony 2.0.11 内で Assetic を実行しようとしています。

私は何時間もその問題をいじっていましたが、私が集めたものから、現在の資産バージョン (1.0.2) は台無しになっており、Windows では動作しません。

assetic と asseticBundle を github から最新のマスター バージョンに更新しようとしましたが、Symfony 2.1 が必要で、多くの変更が加えられ、後方互換性がありません (言うまでもなく、公式にリリースされていないことも言うまでもありません)。

Windows でのこの投稿symfony2 assetics yui コンプレッサー (パス構文)は、この問題に関する良い洞察を提供しますが、残念ながら、それが推奨する資産ライブラリの変更は、私の環境で適切に動作させるには十分ではありません。

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 では、 https : //bugs.php.net/bug.php?id=60120 に従って proc_open とデータ > 2048 バイトに 問題がある可能性があります。 //github.com/symfony/symfony/issues/3216 )。「git config --global core.autocrlf input」を発行し、git からすべてを再フェッチすると、クラッシュすることなく php5.3.10 を使用できました。

2/ https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246cはまともな基盤のように見えます。Process.php のパスに若干の変更を加えましたが ( https://github.com/kriswallsmith/assetic/issues/92を参照)、それが適切かどうかはわかりません。とにかく、この時点で Assetic から取得したコマンド ラインはシェルで動作し、期待される CSS を出力します。

3/ sass.bat (Ruby193\bin にあります) には、さらに先に進むために ruby​​.exe への絶対パスが必要です (難しい方法で、var_dump してスクリプトを強制終了した場合にのみエラー メッセージが表示されることを学びました)。正しい場所!)

さて、状況は少し良くなったように見えますが、まだ sass で動作していません (他のフィルターでは問題なく動作すると思います)。Process.php (172 行目あたり) の "$data = fread($パイプ、8192);" : $pipe が 2 番目のリソースを指している状態で、この場所でスクリプトが 2 回目に渡されると、スクリプトは返されません...そして、php がスタックし、非常に苦労します (少なくとも 2 回 wamp を強制終了/再起動する必要があります)。別のテストを行うことができます)

私は proc_open とストリームにあまり詳しくなく、そこでコードが何をしようとしているのかを理解するのに苦労しています...

これが、物事を機能させようとする次の人に役立ち、最終的には私のケースにも役立つことを願っています. この問題に関するサポートをまだ探しています!

_____アップデート:

さらにテストを行った結果、sass ファイルが十分に小さい場合に「php app/console assetic:dump」が機能する可能性があることがわかりました。実際の css ルール (変数定義と mixin を除く) は、php5.3.10 では 4096 バイト未満、php 5.3.8 ではさらに小さくする必要があるようです。これは、https://bugs.php.net/bug.php?id=60120およびhttps://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/を確認してください

コンパスを 0.12 に更新します

"gem update --system"

その後

"gem install compass"

2. compass で compiler.rb を変更する

10 行目の Ruby193\lib\ruby\gems\1.9.1\gems\compass-0.12.0\lib\compass に移動し、

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 install」を発行します。

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 ファイルを作成し、サイトのページを更新するだけです。えっと…ほら!(うまくいけば!)

注: お気づきかもしれませんが、私は SassFilter の代わりに CompassFilter を使用しています。これは、同じこと (およびそれ以上) を実行し、実際に期待どおりのことを実行できるためです。誰かが SassFilter を修正する方法を見つけることができれば、それはうねりです。その間、私はすでにこれにあまりにも多くの時間を費やしました。

私はその狂気に何日も髪を引っ張ってきました。この投稿が他の人のメンタルヘルスに役立つことを願っています;)

4

2 に答える 2

3

誰かが答えを探してここに来た場合、この質問の更新として(またはコンパスではなくsassのみを使用している人向け)。今必要なのは次のとおりです。

assetic:
    filters:
        cssrewrite: ~
        sass: 
          bin: "<pathtosass>"
          apply_to: "\.scss$"

parameters:
     assetic.ruby.bin: '<pathtoyourrubyhere>'

これはPHP 5.4を使用しています

于 2012-12-05T10:12:53.497 に答える
2

How to use SCSS filter in Symfony2 under Windows?: https://stackoverflow.com/a/9658410/3765という質問に対する私の回答をご覧ください。

これは、Assetic を Windows で動作させるために費やした時間のかなり包括的な記事です。


あなたの例に基づいて-cssrewriteフィルターを追加する必要はありません。Twig から Compass を使用する方法は次のとおりです。

{% stylesheets filter='compass' output='css/compiled/*.css' 'css/example.scss' %}
    <link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}
于 2012-03-11T20:12:44.683 に答える