有没有办法告诉Django压缩机创建源地图
我希望能够在我的生产站点上调试缩小的压缩的JavaScript代码。 我们的网站使用django压缩器来创建缩小和压缩的js文件。 我最近阅读了有关Chrome能够使用源映射来帮助调试此类javascript的信息。 然而,我不知道如何/如果可能的话,告诉django压缩器在压缩js文件时创建源映射
关于输出单独的源映射文件,我没有一个好的答案,但是我能够进行内联工作。
在添加源映射之前,我的settings.py文件使用了以下预编译器
COMPRESS_PRECOMPILERS = (
('text/coffeescript', 'coffee --compile --stdio'),
('text/less', 'lessc {infile} {outfile}'),
('text/x-sass', 'sass {infile} {outfile}'),
('text/x-scss', 'sass --scss {infile} {outfile}'),
('text/stylus', 'stylus < {infile} > {outfile}'),
)
快速之后
$ lessc --help
你会发现你可以把less和map文件放到输出的css文件中。 所以我的新文本/少预编译器条目看起来像
('text/less', 'lessc --source-map-less-inline --source-map-map-inline {infile} {outfile}'),
希望这可以帮助。
编辑:忘了补充,lessc> = 1.5.0为此需要升级使用
$ [sudo] npm update -g less
尽管我无法使用django压缩器(虽然它应该是可能的,但我认为我只是在正确设置应用程序时遇到了问题),但我能够使用它来与django-assets一起工作。
您需要将相应的命令行参数添加到较少的过滤器源代码中,如下所示:
diff --git a/src/webassets/filter/less.py b/src/webassets/filter/less.py
index eb40658..a75f191 100644
--- a/src/webassets/filter/less.py
+++ b/src/webassets/filter/less.py
@@ -80,4 +80,4 @@ class Less(ExternalTool):
def input(self, in_, out, source_path, **kw):
# Set working directory to the source file so that includes are found
with working_directory(filename=source_path):
- self.subprocess([self.less or 'lessc', '-'], out, in_)
+ self.subprocess([self.less or 'lessc', '--line-numbers=mediaquery', '-'], out, in_)
除了这个微小的增加:
确保你的路径中有可用的节点 - 不是ruby gem-less编译器(> = 1.3.2 IIRC)。
打开chrome的web检查器配置页面中的sass source-maps选项。 (是的,'sass'并不少:调整了他们的调试信息格式以匹配sass的自从sass已经实现了一个兼容chrome的映射,并且它们的格式与以前无论如何都没有什么不同)
不是开箱即用,但您可以扩展自定义过滤器:
from compressor.filters import CompilerFilter
class UglifyJSFilter(CompilerFilter):
command = "uglifyjs -c -m " /
"--source-map-root={relroot}/ " /
"--source-map-url={name}.map.js" /
"--source-map={relpath}/{name}.map.js -o {output}"
链接地址: http://www.djcxy.com/p/11749.html
上一篇: Is there a way to tell django compressor to create source maps