Yeoman& RequireJS使用动态生成的HTML构建?

时间:2012-12-23 06:51:38

标签: concatenation requirejs yeoman r.js

我正在尝试将Yeoman生成/管理的前端的RequireJS设置与后端的Laravel PHP框架集成。除了Yeoman / r.js中我的javascript文件的构建步骤的连接部分外,一切都很好。

我在一个坚果壳中的问题:Yeoman中的r.js构建步骤在RequireJS脚本标记周围查找带有<!-- build:js scripts/amd-app.js -->等HTML注释的index.html文件,该文件启动优化和连接例程在RequireJS优化器中。但是:我使用的是Laravel框架,所以没有index.html,因为它是动态生成的。

我设法通过做一个丑陋的黑客并在app目录文件中添加一个index.html来实现这个过程,它只有:

<!-- build:js scripts/amd-app.js -->
<script data-main="scripts/main" src="scripts/vendor/require.js"></script>
<!-- endbuild -->

让Yeoman / r.js找到一个带有相应标签和文件路径的index.html文件,对我的AMD模块进行所有令人敬畏的连接并将其输出到dist目录。

只有这是一个可怕的黑客攻击,而且我确信实现同样的目标要简单得多。我假设它与编辑包含Yeoman构建设置的Gruntfile有关,以反映上面的信息。我只是不确定如何:(

任何有使用Yeoman / RequireJS设置和后端框架的经验的人都可以提供帮助吗? (我想这个问题同样适用于rails。)

1 个答案:

答案 0 :(得分:1)

如果你检查(至少在Mac / linux上):

/usr/local/lib/node_modules/yeoman/tasks/rjs.js

你会看到一句话:

var appIndexPath  = path.resolve('mainFile' in options ? '../app/' + options.mainFile : '../app/index.html');

我的猜测是你可以通过

指定另一个html文件来开始这个过程
rjs: {
  // no minification, is done by the min task
  optimize: 'none',
  baseUrl: './scripts',
  wrap: true,
  name: 'main'
  mainFile: 'kickoff.html'
},

实际上,

<!-- build:js scripts/amd-app.js -->

这是由usemin任务使用的,而不是rjs。

为了完全不需要html文件,我需要深入挖掘。