1

最初に、私はノードの初心者であることを告白しなければなりません。私は以前にASP.NET、PHP、Djangoを使用してきました。いずれにせよ、私はノードが新鮮な空気の息吹であることを発見しました. この問題も厳密にはノードの問題ではありませんが、ノード固有の回答が必要です。

エクスプレスサーバーと角度のあるフロントエンドがあります。サーバー側のテンプレートは swig にあり、現在はエラー ページとインデックス ページのみに使用されます。ほとんどの場合、角度のあるテンプレートが前付けの大部分を占めます。

私が苦労しているのは、それを行う方法を決定することだけではありますが、アセット パイプラインの効率的なワークフローを得ることです。サーバー側のテンプレートは、開発およびテスト中にアセットのバニラを注入できる必要があります。テスト中のクライアント側テンプレートも同様です。基本的に、エクスプレスの静的ミドルウェアで実行することは、構成なしのオプションである必要があります (サーバー側アセットのヘルパーを使用する場合があります)。したがって、git clone -> grunt -> viola です。

ただし、ステージングと本番の間、サーバー側のファイルはそのままにしておきたいと思います。テンプレート ヘルパーは、キャッシュ無効化されたリンクを示すマニフェスト ファイルを解析する場合があります (CDN パスもおそらく)。開発の透明性を保ちながら、論理アセット バンドル名から本番環境に対応したアセットへのリンクを作成する方法は、私にとって謎です。

クライアント側のテンプレートは、アップロードのためにいくつかのdistフォルダーに保存されるため、縮小、連結、挿入などの可能性があります。依存関係ツリー全体 (画像、フォント、css、js) を dist フォルダーに「エクスポート」する必要があることが重要です。

デプロイするには、サーバー側のコードをサーバーにプッシュして実行します。クライアントdistフォルダーをアセットホスト(CDN、nginx、別のノード、おそらく接続静的)にプッシュします

私の質問は実際には何ですか:

  1. broccoli/gulp/grunt などのツールだけでこのワークフローは可能ですか? connect-assets を試してみましたが、あらかじめ決められたフォルダー パスに準拠したくありません。また、cli ツールは他の静的アセットを生成しませんでした。ツールの意味が分からないのかもしれません。
  2. 私は正しいアプローチに従っていますか?

マニフェスト ファイルの消費に関するブロッコリーのディスカッションに追加しました: https://github.com/mjackson/broccoli-rev/issues/1#issuecomment-49076249

編集:私はbowerを使用していることを忘れていたので、アセットは任意の(おそらくURLも)場所から取得する必要があります。

4

1 に答える 1