编译和连接javascript和css资产。

Gears的Python项目详细描述


https://secure.travis-ci.org/gears/gears.png?branch=develop

gears是一个库,用于编译和连接javascript和css资产,高度 灵感来自ruby的Sprockets。您还可以编写脚本、样式和客户端 使用CoffeeScriptHandlebarsStylusLess的模板并编译它们 使用外部包(gears-coffeescriptgears-handlebarsgears-stylusgears-less)。这些包已经包含了所有必需的node.js模块,因此 你不必担心自己安装它们。

还有:

  • django-gears,django的一个应用程序,它集成了gears和django项目;
  • Flask-Gears,将齿轮与烧瓶应用程序集成的扩展;
  • gears-cli,编译资产的命令行实用程序。它也可以看 用于更改的资产并自动重新编译它们。

功能

  • 在头注释中使用指令的依赖关系管理。例如:

    /* Dependencies:
     *= require jquery
     *= require underscore
     *= require backbone
     *= require_tree views
     *= require_directory templates
     */
    

    目前支持六种指令类型:

    • require :path:包括资产的内容path后缀 与当前资产具有相同的扩展名(例如,如果 js/app.js.coffee具有指令require viewsjs/views.js.coffee将包括在内)。支持全局搜索:require models/*
    • require_directory :path:包括 目录path的后缀与中的当前资产相同 按字母顺序排列。
    • require_tree :path:包括 与目录path中的当前资产及其所有 按字母顺序排列的子目录。
    • require_self:包含当前资产在当前 地点。如果没有require_self指令,则内容将是 附加在资产末尾。
    • depend_on :path:当需要指定 影响资产,但不包括在捆绑资产中或包括 他们使用编译器。例如,如果在某些 CSS预处理器(更少或手写笔)。支持全局搜索:depend_on app/*
    • public:将资产标记为公共。
  • 现代语言中的脚本和样式,如咖啡脚本、手写笔、less (可以轻松添加对新语言的支持)。

  • 使用把手编写客户端模板。

  • 资产的编译器列表由资产指定 附加到原始扩展名的扩展名。例如,对于资产 将使用名为js/app.js.coffeecoffeescript编译器。这是 支持的编译器的扩展(通过外部包):

    • 咖啡脚本-.js.coffee
    • 车把-.js.handlebars
    • 触笔-.css.styl
    • 减去-.css.less
  • 缓存

  • 压缩。支持的压缩机:

    还可以轻松添加新的编译器。

  • 支持Python3。

安装

您可以使用pip:

安装Gears
$ pip install Gears

如果要使用依赖node.js的编译器或压缩器,则需要 安装其他依赖项:

$ pip install gears-less          # LESS
$ pip install gears-stylus        # Stylus
$ pip install gears-handlebars    # Handlebars
$ pip install gears-coffeescript  # CoffeeScript

$ pip install gears-uglifyjs      # UglifyJS
$ pip install gears-clean-css     # clean-css

请注意,所有这些编译器和压缩器都要求node.js 安装在您的系统上。

用法

此示例编译公共资产(默认值:assets/js/script.jsassets/css/style.css,所有未编译为.css或.js和 使用assets目录中的public指令标记为公共的资产 到static

import os

from gears.environment import Environment
from gears.finders import FileSystemFinder


ROOT_DIR = os.path.abspath(os.path.dirname(__file__))
ASSETS_DIR = os.path.join(ROOT_DIR, 'assets')
STATIC_DIR = os.path.join(ROOT_DIR, 'static')

env = Environment(STATIC_DIR)
env.finders.register(FileSystemFinder([ASSETS_DIR]))
env.register_defaults()

if __name__ == '__main__':
    env.save()

已经提到了django-gears应用程序,您可能想在其中使用它 你的Django项目。

贡献

您可以随意在github上发送fork、pull请求或报告bug和问题。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么lambdas中使用的局部变量必须是final或有效final?   java忽略cucumber中的特定标记,但运行所有其他标记   java显示存储在内部存储器上的映像   java在Android中隐藏密钥库密码的最佳方法是什么?   java设置M2_主页   java JUnit测试返回null和false   具有未知PK/FK属性的java级联持久化JPA实体违反了NotNullConstraint   如何在Java中填充数组?   优化java帮助编译器创建更高效的字节码吗?   java Spring将对象属性传递给href按钮提交   python Java等价于pyftpdlib?   java I在两台服务器上部署了一个web服务,它使用@Schedule自动发送电子邮件。我们如何防止重复发送电子邮件?   java蓝牙当前电池百分比   java为什么在尝试输出数组时会出现异常错误?   java如何覆盖tapestry AlertManager