web-dev-qa-db-ja.com

Django:リリース前にcss / jsファイルを自動縮小

次のような場合があります。開発中に非圧縮のjs/cssファイルを使用したいのですが(たとえば、jsをデバッグするため)、本番環境では、そのファイルの縮小バージョンに自動的に切り替えたいと思います。

いくつかの簡単な解決策は、テンプレートを挿入することです。

<script src="some_js.{% if not debug %}min.{% endif %}js"....

ただし、これには、そのようなファイルが存在することを手動で提供し、元のファイルの変更後にミニファクションの操作を行う必要があります。

プロジェクトでこれをどのように達成しますか?このためのツールはありますか?

25
dzida

試しましたか http://code.google.com/p/Django-compress/

Djangoで利用可能なアセットマネージャーのかなり完全なリストについては、 http://djangopackages.com/grids/g/asset-managers/ を参照してください...

すでにDjango-compressを使用している場合は、多くの新機能を備えた、手入れの行き届いたフォークであるDjango-pipelineへのアップグレードを検討する必要があります。 Django-compressを使用しているすべての人に、代わりにDjango-pipelineに切り替えることをお勧めします:* Django-pipelineドキュメント

18

Django-compressはメンテナンスされなくなりました。代わりに https://github.com/cyberdelia/Django-pipeline を試してください。

20
Rick Westera

私は webassets を使用してきましたが、これまでのところ非常に満足しています。私が本当に気に入っているのは、プロジェクト構成ではなく、テンプレート内でCSSファイルとJSファイルを定義できることです。

ドキュメントは次の場所にあります: http://elsdoerfer.name/docs/webassets/

8
heyman

2016年末の時点で、これらの回答はほとんど時代遅れです。

いくつかのオプションについては、こちらを確認してください: https://gitlab.com/rosarior/awesome-Django#asset-management

現時点では、 Django-compressor が適切な選択ですが、実行する内容に応じて別の方法があります。最近もwebpackが人気になっていると思います。

4
melchoir55

JSファイルとCSSファイルを縮小して連結するために this Makefile と書きました。 YUI Compressor JARによって異なります。ただし、ファイルを更新した後でも、makeを実行する必要があります。それでも、サーバーの起動時やリロード時に実行したり、SCMにコミットフックを設定したりできます。

もちろん、まだ{% if not debug %}が必要ですが、IMOに支払うのは少額です。

簡単な使用法を示す:

$ make
[css] static/css/first.css
[css] static/css/second.css
[css] static/css/third.css
[css] static/css/and_so_on.css
[tag] @import url("static/css/all.css");
[js] static/js/first.js
[js] static/js/second.js
[js] static/js/third.js
[js] static/js/and_so_on.js
[tag] <script type="text/javascript" src="static/js/all.js"></script>
Done.
0
jweyrich