如何在Django中使用Less CSS?

40

我正在使用 Twitter Bootstrap 和 Django。我已经通过 pip requirements 文件处理好我的依赖项。

我有两个问题:

  1. 在开发过程中,我如何使用 Less,以便在编辑 Less 文件时进行编译?
  2. 如何创建一些构建脚本,并在部署时压缩和合并我的 JS 并从 Less 生成 CSS?

我编写了一个自定义的构建脚本,它创建了一个虚拟环境,运行 'pip install -r requirements.txt'、Django syncdb、Django migrate,然后我们就可以开始了。

怎样最简单地将 Less 集成进来呢?

谢谢!

2个回答

45
  1. 安装 django-static-precompiler:

  2. 运行 pip install django-static-precompiler

  3. static_precompiler 添加到 INSTALLED_APPS 中

  4. 安装 lessc 可执行文件,可以通过软件包管理器安装或运行 npm install lessnpm 是 Node.js 包管理器,应该可以通过发行版安装,最后才使用)

  5. 在模板中使用 less:

  6. 加载模板标签: {% load less %}

  7. 使用 less 模板标签: <link rel="stylesheet" href="{{ STATIC_URL}}{% less "path/to/styles.less" %}" />

请注意,默认情况下编译后的文件将保存在您的STATIC_ROOT(如果您的设置中没有STATIC_ROOT,则保存在MEDIA_ROOT)下的COMPILED文件夹中。您可以使用STATIC_PRECOMPILER_OUTPUT_DIR设置更改此文件夹名称。有关详细信息,请参见文档

我个人没有尝试过,但我知道django-compressor也支持less。


8
我更喜欢使用django-compressor,因为它可以为我提供更多有用的功能,而且可以编译scss和coffeescript。 - krs
所有这些应用程序的问题在于它们不会监视被 @include 的文件的更改... - jpic
1
@jpic,这是解决Less CSS的方案:http://www.caktusgroup.com/blog/2012/03/05/using-less-django/ JS解释器可以在客户端运行,但速度较慢。因此,如果DEBUG=True,则使用JS解释器,这将消除对更改的监视。 - benesch
当然,这看起来就像我现在如何使用lesscss和twitter bootstrap的方式 - 这包括在调试模式下也使用less! - jpic
我还需要在设置中的STATICFILES_FINDERS中添加'less.finders.LessFinder'。 - John Lehmann
19
我是django-less的作者,我建议使用我正在开发的django-static-precompiler。它是通用的(支持Less、SCSS、Coffeescript等),可以监控被包含的文件,并具有一个方便的static_precompiler_watch管理命令。它与django-less兼容,因此您不需要更新您的代码。 - Andrey Fedoseev

15

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接