2

Flask-Assetsを使用して Flask アプリケーションでwebassetsを使用していますが、 bundlesを作成するときのオプションに問題があります。depends

私の場合、次のディレクトリ構造から LESS ファイルをバンドルしています。

/static
 \_ /css
     \_ /bootstrap
     |   \_ bootstrap.less // This file @imports variables.less and custom.less
     |   \_ variables.less
     \_ custom.less

私のバンドルは次のようになります。

css = Bundle(
    "css/bootstrap/bootstrap.less",
    filters="less, cssmin",
    output="dist/base.css",
    depends="**/*.less"
)

これらの設定では、 LESS ファイルは、またはNOTのいずれbootstrap.lessかに変更が加えられるたびに再構築されます。custom.lessvariables.less

私が理解していることから、dependsオプションに使用される式はグロブ命令であり、上記の式を使用すると、すべてのディレクトリを再帰的に通過し、LESS ファイルを取得するだけです。ただし、に加えられた変更を反映することはないようvariables.lessです。

これを修正しようとして、次のオプションを試しましたdepends

  • "*.less"- 何も取得しません (プロジェクト ディレクトリのルートを検索しているため、とにかく LESS ファイルが存在しないと思います)
  • "**/*.less, myproject/static/css/bootstrap/variables.less"- どのファイルの変更もまったく検出しません。
  • "**/*.less, myproject/static/css/bootstrap/variables.less"- 上記と同じです。
  • "myproject/static/css/bootstrap/variables.less"variables.less- 奇妙なことに、これは両方と他の LESS ファイル (など )に加えられた変更を検出しますcustom.less

本質的に、最後の項目は私の問題の「解決策」ですが、なぜこのように機能するのかわからないので、うまくいきません。ここで誰かが説明や正しい方向へのナッジを提供できますか?

ありがとう!

4

2 に答える 2

3

ここでの問題は、再帰的なグロブ**がモジュールでサポートされていないglobことです (まだ; issue 13968を参照してください)。

私のプロジェクトの1つでこれを設定した方法は次のとおりです(それがあなたのニーズに合うかどうかはわかりません):

less/
├── bootstrap/
│   ├── bootstrap.less
│   ├── variables.less
│   └── ...
└── style.less        # @import "bootstrap/bootstrap.less";

バンドル構成:

css = Bundle(
    "less/style.less",
    filters="less, cssmin",
    output="css/all.css",
    depends="less/bootstrap/*.less"
)
于 2013-08-17T09:37:37.270 に答える
3

glob2モジュールをインストールすることでこれを修正しました。その後、ネストされたディレクトリと最上位レベルのdepends='**/*.scss'変更を監視しながら、期待どおりに動作し始めました。

于 2015-12-18T13:30:27.213 に答える