浏览代码

Allowed installing closure with pip for admin JavaScript compression.

Tim Graham 9 年之前
父节点
当前提交
adffff79a3
共有 2 个文件被更改,包括 16 次插入7 次删除
  1. 8 1
      django/contrib/admin/bin/compress.py
  2. 8 6
      docs/internals/contributing/writing-code/javascript.txt

+ 8 - 1
django/contrib/admin/bin/compress.py

@@ -4,6 +4,13 @@ import os
 import subprocess
 import sys
 
+try:
+    import closure
+except ImportError:
+    closure_compiler = None
+else:
+    closure_compiler = os.path.join(os.path.dirname(closure.__file__), 'closure.jar')
+
 js_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'static', 'admin', 'js')
 
 
@@ -21,7 +28,7 @@ Compiler library and Java version 6 or later."""
                       action="store_false", dest="verbose")
     options = parser.parse_args()
 
-    compiler = os.path.expanduser(options.compiler)
+    compiler = closure_compiler if closure_compiler else os.path.expanduser(options.compiler)
     if not os.path.exists(compiler):
         sys.exit(
             "Google Closure compiler jar file %s not found. Please use the -c "

+ 8 - 6
docs/internals/contributing/writing-code/javascript.txt

@@ -45,15 +45,17 @@ Compressing JavaScript
 
 To simplify the process of providing optimized JavaScript code, Django
 includes a handy Python script which should be used to create a "minified"
-version. To run it::
+version. To run it:
 
-    python django/contrib/admin/bin/compress.py
+.. code-block:: console
+
+    $ pip install closure
+    $ python django/contrib/admin/bin/compress.py
 
 Behind the scenes, ``compress.py`` is a front-end for Google's
-`Closure Compiler`_ which is written in Java. However, the Closure Compiler
-library is not bundled with Django directly, so those wishing to contribute
-complete JavaScript patches will need to download and install the library
-independently. The Closure Compiler library requires `Java`_ 7 or higher.
+`Closure Compiler`_ which is written in Java. The Closure Compiler library is
+not bundled with Django, but you can install it using pip as done above. The
+Closure Compiler library requires `Java`_ 7 or higher.
 
 Please don't forget to run ``compress.py`` and include the ``diff`` of the
 minified scripts when submitting patches for Django's JavaScript.