2015-05-19 56 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