3

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

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

我已经设法通过做一个丑陋的黑客并在应用程序目录文件中添加一个 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 设置和后端框架经验的人可能会有所帮助?(我想这个问题也同样适用于导轨)。

4

1 回答 1

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 文件的需求,我必须深入挖掘。

于 2012-12-23T19:46:12.757 回答