2015-05-19 55 views
2

我有一個基於ember-cli的應用程序需要集成到現有的java/JSP應用程序中。爲此,我需要生成一個JSP文件,其中包含由ember-cli/broccoli-asset-rev生成的js/css指紋URL。ember cli多個索引文件

這是一個html文件,工作很好,我可以將其設置使用,通過改變我的Brocfile.js JSP文件包括:

var app = new EmberApp({ 
    outputPaths: { 
    app : { 
     html: 'index.jsp' 
    } 
    } 
}); 

但這樣可以防止餘燼服務工作,因爲它使用的index.jsp作爲html文件。是否有可能產生?

+0

也許瞭解'jsp'和'html'文件之間的區別可以讓我們找到不同的方法。 – givanse

+0

HTML和JSP文件之間的區別在於,JSP文件將一些變量注入到由服務器在運行時填充的元標記中。 – Matt

回答

0

如何添加符號鏈接?

ln -s index.jsp index.html 
+0

JSP文件將不同於HTML文件,所以不幸的是這不能工作 – Matt

+0

啊!我誤解了 – givanse

0

取決於您使用的是您的什麼項目構建工具,我可能會建議類似如下:

  1. 把一些佔位符節在您的index.html。
  2. 將index.jsp複製到index.jsp.tmp。
  3. 將代碼從index.jsp複製到佔位符部分。
  4. 將index.jsp.tmp移回index.jsp並清理。

你可能會考慮像gulp-replace這樣的工作。

+0

我確定這個工作流程有很多工具。你如何將它與Ember CLI(Broccoli)集成? – givanse

1

在嘗試了很多事情之後,我提出了兩個解決方案,都有缺點。首先是使用製作新的西蘭花樹並將其與他的應用程序樹合併,然後在生成的樹上運行broccoli-asset-rev。這個缺點是小鬍子不會吸水,這對輸出配置很有用。這看起來是這樣的:

//Brocfile.js 
 

 
var mergeTrees = require('broccoli-merge-trees'); 
 
var funnel = require('broccoli-funnel'); 
 
var assetRev = require('broccoli-asset-rev'); 
 
var EmberApp = require('ember-cli/lib/broccoli/ember-app'); 
 

 
var jspTree; 
 

 
var app = new EmberApp({ 
 
    fingerprint: { 
 
    enabled: false 
 
    }, 
 
    storeConfigInMeta: false 
 
}); 
 

 

 
jspTree = funnel('app', { 
 
    files: ['index.jsp'] 
 
}); 
 

 
module.exports = assetRev(mergeTrees([appTree = app.toTree(), jspTree]), { 
 
    extensions: ['js', 'css'], 
 
    replaceExtensions: ['jsp', 'html'] 
 
});

另一種方案是在覆蓋燼-CLI私有API方法,構建樹索引。這個解決方案確實讓鬍子得到了保溼,但依賴於私人方法。您可以找到詳細信息herehere