2015-09-09 124 views
1

在意識到無法在我們當前的prod服務器上安裝Bower之前,我們已經開始使用Bower(通過SpBower)來管理我們的js和css庫。僅包含傾銷文件的資產資產

這個想法不是在prod服務器上生成文件,而是在dev環境中轉儲prod文件並上傳這些轉儲的文件。但即使在PROD模式,Assetic正在尋找的源文件和亭子註冊這些供應商的文件,所以Assetic拋出此異常

(Twig_Error_Syntax(code: 0): An exception has been thrown during the compilation 
of a template (\"There is no \"jquery_js\" asset.\") 

凡jquery_js是鮑爾註冊後以這種方式

{% javascripts output='js/vendor-1.js' 
     '@jquery_js' 
     '@jquery_ui_js' 
     '@chartjs_js' 
     '@Chart_StackedBar_js_js' %} 
     <script type="text/javascript" src="{{ asset_url }}"></script> 
    {% endjavascripts %} 

被稱爲有一種方法可以告訴資產忽略資產(jquery_js,jquery_ui_js ...)只查看輸出文件(vendor-1.js)?我在Symfony2食譜中找不到任何東西。


下面是config.yml

assetic: 
    debug:   "%kernel.debug%" 
    use_controller: false 
    bundles:  [ ProjectBundle ] 
    filters: 
     cssrewrite: ~ 

sp_bower: 
    assetic: 
     nest_dependencies: false 
    bundles: 
     ProjectBundle: 
      asset_dir: ../../public/vendor 
      cache: 
       id: ~ 
       directory: ../../public/vendor/cache 

而且在config_dev.yml

assetic: 
    use_controller: false 

還有bower.json文件

的內容Assectic和Sp鮑爾節
{ 
    "name": "ProjectBundle", 
    "dependencies": { 
     "jquery": "~2.0", 
     "jquery.countdown": "~2.0", 
     "jquery-ui": "~1.11", 
     "bootstrap": "~3.0", 
     ... 
    } 
} 
+0

呃,如果你不想Assetic創建從源文件中的'output'文件,你到底想要做什麼? – lxg

+0

假設我有2臺服務器,1臺爲dev,1臺爲prod。我想使用Assetic和Bower在開發服務器上生成輸出文件,並在prod服務器上僅上傳生成的輸出文件(並非所有源已經彙總在輸出文件中)。 –

+0

好吧,我明白了...我現在明白你的問題。您可以發佈一個使用bower過濾器(例如生成'@ jquery_js')的示例文件,以及'config.yml'中的'assetic'部分嗎? – lxg

回答

1

我找到了一件作品周圍,​​不是很好,但解決了我們的問題。

這個想法是僅在dev env上使用sp_bower,所以只能在config_dev.yml中使用,並在prod env中手動指定命名資產,所以在config_prod.yml中。

因爲我們不會在prod上生成輸出文件(但使用上傳的文件),所以我們不必真的把正確的路徑放到源文件中,我們甚至可以使用假js文件(例如文件名爲prodDumpAlert.js),其中包含例如解釋發生了什麼的警報。

所以config_dev.yml看起來就像是:

imports: 
    - { resource: config.yml } 

assetic: 
    assets: 
     jquery_js: 
      inputs: 
       - '@ProjectBundle/Resources/public/utils/prodDumpAlert.js' 
     jquery_ui_js: 
      inputs: 
       - '@ProjectBundle/Resources/public/utils/prodDumpAlert.js' 
     chartjs_js: 
      inputs: 
       - '@ProjectBundle/Resources/public/utils/prodDumpAlert.js' 
...