如何使用Flask-Assets打包资产

时间:2013-11-07 01:45:36

标签: python flask webassets flask-assets

如何使用存在于Flasks默认静态/目录之外的Flask-Assets捆绑资产?

  • npm install将资源下载到bower_components/
  • 我在javascripts/
  • 中有其他javascripts
  • 我正在使用Flasks app工厂模式,无论我如何尝试配置Flask-Assets - 我都无法绕过assets instance not bound to an application, and no application in current context例外。

任何帮助都会受到赞赏,特别是如果你能给我一个如何管理你的应用程序静态/目录之外的原始+打包资产的例子:P

app结构

app/
    static/
    __init__.py
    assets.py
javascripts/
    app.js
bower_components/
    jquery.js
    jquery,pjax,js

应用程序/ assets.py

from flask.ext.assets import Bundle, Environment

js = Bundle(
    'bower_components/jquery.js',
    'bower_components/jquery.pjax.js',
    'javascripts/app.js'
    filters='jsmin',
    output='static/packed.js'
)

assets = Environment()

assets.register('js_all', js)

应用程序/的初始化的.py

from flask import Flask
from app.assets import assets

app = Flask(__name__)
assets.init_app(app)

1 个答案:

答案 0 :(得分:1)

我检查了Flask-Assets源代码,并在FlaskResolver类的文档字符串中找到了它:

  

如果设置了Environment.load_path,它将用于查找源文件,替换Flask系统。蓝图前缀不再解析。

所以你需要在app / init.py中执行以下操作:

from os.path import abspath, join

app = Flask(__name__)
assets.load_path = abspath(join(app.root_path, '..'))
assets.init_app(app)