これを邪魔にならないようにするために、可能であれば、アプリの静的フォルダー内のアプリの名前を持つディレクトリ内にすべてをネストせずにこれを実行したいので、冗長に感じます。それが唯一の方法であるなら、それは人生です。
使ってます:
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
と:
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
これは、collectstaticの実行時にJSとSASSをコンパイルします。これらは両方ともAPP_ROOT/static/ディレクトリにあります。
唯一の「問題」は、すべてのソースsassファイルとjsファイルを一緒に持ってくることです。ある時点で、これをすべてS3にプッシュする予定ですが、可能であればそれを避けたいと思います。
実行すると、次のことがわかりました。
python manage.py collectstatic -i sass -i js
残りの「ソース」ファイルは除外したまま、指定したJSファイルとCSSファイルをコンパイルします。残念ながら、/ admin / js /などと一致するため、/ admin /内のすべてのjsファイルも無視されます。これがこの特定のプロジェクトで問題になる可能性があるかどうかさえわかりませんが、将来的には他のアプリで予測できます。私は間違いなくアプリに保持されている静的なjs/cssを含めたいと思います。
私がやりたいことは次のようなものです。
python manage.py collectstatic -i app_name/sass -i app_name/js
冒頭で述べたように、簡単な解決策は、django.contrib.adminと同じように、フォルダー内の静的ファイルの前にapp_name/を付けることです。ただし、この時点で、PROJECT_ROOT / app_name / static / app_name / [js | sass | img | data] /のディレクトリ構造になり、冗長性を回避できるはずです。
繰り返しになりますが、他のアプリとの競合を回避することを保証するために、おそらくそれが最良のオプションですか?
カスタムストレージとファインダーの作成を検討しましたが、自分で作成することは可能だと思います。最初にここをチェックして、これが他の誰かが解決した問題であるかどうかを確認したか、または圧倒的な応答がプレフィックスディレクトリを追加するだけであるかどうかを実際に確認したかったのです。
django.contrib.staticfiles.finders.AppDirectoriesFinder
もし私が自分自身を転がすとしたら、私がたどると思う道は延長してオーバーライドするでしょうlist()
。このアプローチが機能するかどうかはまだわかりません。collectstatic管理コマンドから状況がどのように進行するかをさらに追跡する必要があります。したがって、誰かがこれまたは同様のことを以前に行ったことがある場合、またはそれが機能する/機能しない理由を知っている場合は、助けが必要です。感謝。
ありがとう!