2015-04-26 33 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)