2

我有一个基于 ember-cli 的应用程序,需要集成到现有的 java/JSP 应用程序中。为此,我需要生成一个带有 js/css 指纹 URL 的 JSP 文件,这些 URL 由 ember-cli/broccoli-asset-rev 生成。

这适用于 html 文件,我可以通过将 Brocfile.js 更改为包含以下内容来设置它使用 JSP 文件:

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

但这会阻止 ember serve 工作,因为它使用 index.jsp 作为 html 文件。是否可以同时生成?

4

3 回答 3

1

在尝试了很多事情之后,我想出了两个解决方案,两者都有缺点。第一种是使用创建一个新的 broccoli 树并将其与应用程序树合并,然后在生成的树上显式运行 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']
});

另一种解决方案是覆盖 ember-cli 中的私有 api 方法,该方法为索引构建树。这个解决方案确实让小胡子得到水分,但依赖于一种私人方法。您可以在此处此处找到详细信息

于 2015-05-28T15:28:31.003 回答
0

添加符号链接怎么样?

ln -s index.jsp index.html
于 2015-05-19T15:41:22.993 回答
0

根据您在项目中使用的构建工具,我可能会推荐如下内容:

  1. 在 index.html 中放置一些占位符部分。
  2. 将 index.jsp 复制到 index.jsp.tmp。
  3. 将 index.jsp 中的代码复制到占位符部分。
  4. 将 index.jsp.tmp 移回 index.jsp 并进行清理。

您可能会考虑使用 gulp-replace之类的方法来完成这项工作。

于 2015-05-19T16:00:07.570 回答