编译和连接javascript和css资产。
Gears的Python项目详细描述
gears是一个库,用于编译和连接javascript和css资产,高度 灵感来自ruby的Sprockets。您还可以编写脚本、样式和客户端 使用CoffeeScript、Handlebars、Stylus、Less的模板并编译它们 使用外部包(gears-coffeescript,gears-handlebars,gears-stylus, gears-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 views, js/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。
缓存
压缩。支持的压缩机:
- SlimIt(仅限python,2.x);
- cssmin(仅限python,2.x);
- UglifyJS(node.js,使用gears-uglifyjs);
- clean-css(node.js,使用gears-clean-css)。
还可以轻松添加新的编译器。
支持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.js, assets/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和问题。