2015-04-26 30 views
2

我只是试图建立flask-assets(基于webassets),但只是无法得到它的工作。瓶资产不工作... =疯狂

我有标准的设置;

  • 蟒的virtualenv
  • PIP安装最基本(烧瓶,烧瓶资产)
  • SASS红宝石宝石(对于试图SASS/SCSS)
  • 通过NPM以下(试图lesscss)
  • 通过PIP
  • jsmin(对于试图jsmin)

配置:

  • 我在瓶创建工作主页
  • static文件夹中创建(对CSS/JS资产)
  • 的CSS/JS文件被确认工作(CSS背景,JS滑块等)
  • 基本上我的发展非烧瓶资产的网站正在运作

我跟随了这里的简单官方指南: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,&也是jsmin(从使用指南中的精确代码复制粘贴) - 它仍然不起作用。

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

也;相关错误?我希望它来创建main.css的,但因为它没有,我在浏览器中得到一个错误(使用app.debug = True &烧瓶内置的开发服务器):

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所以烧瓶资产/webassets中仍然没有工作。

我也尝试将资产对象以各种方式传递给模板,以防万一需要时(尽管没有文档说明这一点) - 这是行不通的。

这让我疯狂。任何指针将不胜感激。
谢谢

+0

你不能同时使用LESS和Sass,你实际上在使用哪一个? – cimmanon

+0

我想Sass。所以我试图使用它=不工作。我的调试过程,看看它只是萨斯不工作,或其他的东西...所以我试着SCSS =不工作。所以我尝试lesscss =不工作。所以我尝试了flase-assets网站上的确切示例(jsmin)=不工作。 – SiNGH

+0

您是否在Flask中打开了调试? – dirn

回答

1

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

PS:恕我直言Flask资产既不是非常完整,也没有很好的记录。它也消耗你的应用程序运行时间,这在调试和生产上都很糟糕。我已经切换到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)