Flask-Assets根本不工作...... =疯狂

时间:2015-04-26 19:14:10

标签: flask sass less webassets flask-assets

我只是尝试设置 flask-assets (基于 webassets ),但是无法让它发挥作用。

我有标准设置;

  • python virtualenv
  • pip安装必需品(烧瓶,烧瓶资产)
  • sass ruby​​ gem(用于尝试sass / scss)
  • 少通过npm(尝试lesscss)
  • jsmin via pip(用于尝试jsmin)

配置:

  • 我在Flask
  • 创建了一个工作主页 创建
  • static文件夹(对于css / js资产)
  • 确认css / js文件正常工作(css background,js slider等)
  • 基本上我的开发非烧瓶资产网站工作正常

我在这里遵循了简单的官方指南:flask-assets usage。 我完全理解如何使用它(根据该页面)。我甚至完全复制粘贴代码,&仍然无法使其发挥作用。

我尝试过的一些代码(对于lesscss):(当然我在main.less中工作过css)

from flask.ext.assets import Environment, Bundle
assets = Environment(app)
assets.debug = True

lesscss = Bundle('main.less', output='main.css', filters='less')
assets.register('less', lesscss)

然后在我的模板中:

{% assets "less" %}
<link href="{{ ASSET_URL }}" rel="stylesheet">
{% endassets %}

然而,烧瓶资产才刚刚起作用。我用sass,scss和&amp;还有jsmin(使用指南中的确切代码复制 - 粘贴) - 它仍然无法正常工作。

  • 我注意到.webassets-cache文件夹已创建,但是(总是)为空......

也;相关错误?;我希望它能创建main.css,但由于它没有,我在浏览器中出错(使用app.debug = True&amp; flask的内置开发服务器):

webassets.exceptions.BuildError
BuildError: Nothing to build for <Bundle output=css/main.css, filters=[<webassets.filter.less.Less object at 0x7f4958dc6710>], contents=('css/main.less',)>, is empty

因此;如果我手动创建一个空的main.css,它会加载页面(没有错误),然而 main.css文件没有用css填充所以 flask-assets / < em> webassets 仍无效。

我还试图以各种方式将 assets 对象传递给模板,以防万一需要(尽管没有文档说明这一点) - 这并没有工作。

它让我发疯了。任何指针都将不胜感激 谢谢

1 个答案:

答案 0 :(得分:1)

Flask-Assets文档中缺少信息。 您的问题是sass_bin配置或环境加载路径。 你应该尝试两种,在我的情况下,它是配置。请参阅下面的工作配置。

PS:IMHO Flask Assets既不是很完整也没有很好的记录。它还会消耗您的应用程序运行时,这会影响调试和生产。我已切换到GULP!

 env = Environment(app)
 env.config['sass_bin'] = '/usr/local/bin/sass'
 # env.load_path = [os.path.join(os.path.dirname(__file__), 'sass')]
 js = Bundle('js/jquery/jquery-2.1.4.js', 'js/angular/angular.js',
             'js/socketio/socket.io.js', filters='jsmin', output='js/all_min.js')
 env.register('js_all', js)
 myjs = Bundle('myjs/Interpolation.js', 'myjs/socketio.js' , filters='jsmin', output='myjs/all_min.js')
 env.register('myjs_all', myjs)
 css = Bundle('sass/base.sass', filters='sass', output='css/base.css')
 env.register('css_all', css)