3

バックエンドのLaravel PHPフレームワークを使用して、Yeomanによって生成/管理されたフロントエンドにRequireJSセットアップを統合しようとしています。私のjavascriptファイルのYeoman / r.jsのビルドステップの連結部分を除いて、すべてがゴールデンです。

私の問題を簡単に言うと、Yeoman の r.js ビルド ステップは<!-- build:js scripts/amd-app.js -->、RequireJS スクリプト タグの周りのような 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 セットアップを統合した経験のある人はいますか? (この質問はレールにも同様に当てはまると思います)。

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 -->

これは、rjs ではなく、usemin タスクによって使用されます。

html ファイルの必要性をまったくスキップするには、さらに深く掘り下げる必要があります。

于 2012-12-23T19:46:12.757 に答える