我有一个基于ember-cli的应用程序,需要集成到现有的java/JSP应用程序中。为此,我需要生成一个JSP文件,其中包含由ember-cli/broccoli-asset-rev生成的js/css指纹url。
这是一个工作良好的html文件,我可以设置它使用JSP文件通过改变我的brofile .js包括:
var app = new EmberApp({
outputPaths: {
app : {
html: 'index.jsp'
}
}
});
,但是这会阻止ember服务工作,因为它使用index.jsp作为HTML文件。有可能同时产生这两种情况吗?
在尝试了很多东西之后,我提出了两种解决方案,两者都有缺点。第一种方法是创建一个新的西兰花树,并将其与应用树合并,然后在生成的树上显式运行西兰花-资产-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']
});
另一个解决方案是在ember-cli中覆盖一个私有api方法,该方法为索引构建树。这种解决方案确实可以让胡须得到水分,但依赖于一种私人方法。你可以在这里和这里找到详细信息
添加符号链接如何?
ln -s index.jsp index.html
根据您在项目中使用的构建工具,我可能会推荐以下内容:
- 在你的index.html中添加一些占位符部分。
- 将index.jsp复制到index.jsp.tmp.
- 将index.jsp中的代码复制到您的占位符部分。
- 将index.jsp.tmp移回index.jsp并清理。
您可以考虑使用类似于gulp-replace的工具来完成这项工作。