任务执行器类似于python的gulp
Flask-Gulp的Python项目详细描述
类似于gulp的任务管理器,用于处理静态文件。
使用烧瓶吸口
设置酒瓶吞咽是相当容易的。下面是一个示例:
from flask_gulp import Static static = Static(app)
这允许使用task
装饰器添加任务:
@static.task('coffee') def coffee_task(): src(r'static/coffee/**/*.coffee')\ .pipe(coffee(bare=True))\ .pipe(dest(output='static/js/'))
src函数与所有扩展一起作为全局提供给任务函数作用域。
如您所见,工作流类似于gulp。
js和css函数
受Flask-Funnel启发,js和css函数被提供给应用程序上下文,以便生成相应的链接:
<head> <!-- ... --> {{ css('less') }} </head> <body> <!-- ... --> {{ js('coffee', 'cjsx') }} </body>
每个任务接收多个任务名称并生成指向生成文件的链接。
扩展名
烧瓶gulp带有四个扩展名,coffee,cjsx,less和dest。第一个接受executable
设置,该设置保存相应的二进制位置,默认情况是直接调用它。
要添加新的扩展,请使用装潢器,该装潢器配有烧瓶吸口:
from flask_gulp.extensions import extension @extension def cjsx(resources): command = ['cjsx', '-c', '-s'] bare = cjsx.settings.get('bare') if bare: command += ['-b'] for filename, data in resources: process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = process.communicate(data) if process.returncode: yield None, err else: dest = replaceExt(filename, '.js') yield dest, out
每个扩展名接收一个iterable对象,该对象生成每个文件的名称和内容。函数必须返回一个iterable对象,其格式与结果文件的格式相同。将新文件名返回为None
将被解释为错误。
变量<function_name>.settings保存一个字典,其中包含扩展初始化中提供的关键字,例如cjsx(bare=True)。