Sailsにバンドルされているアセットパイプラインは、プロジェクトの一貫性と生産性を高めるために、慣習的なデフォルト設定で構成された一連のGruntタスクです。フロントエンドのアセットワークフロー全体が完全にカスタマイズ可能であり、すぐに使えるデフォルトタスクもいくつか提供されています。Sailsでは、ニーズに合わせて新しいタスクを構成するのが簡単です。
SailsのデフォルトのGrunt構成が、あなたの助けになるために行ういくつかのことを以下に示します。
以下は、新しいSailsプロジェクトにデフォルトで含まれているGruntタスクのリストです。
このGruntタスクは、Sailsプロジェクトの
.tmp/public/
の内容をクリーンアップするように構成されています。
キャッシュバスティングのために、ファイル名の末尾に一意のハッシュを作成して追加します。
JavaScriptファイルとCSSファイルを連結し、連結されたファイルを
.tmp/public/concat/
ディレクトリに保存します。
devタスク設定
coffeescriptファイルとlessファイルを除くすべてのディレクトリとファイルを、sails assetsフォルダーから
.tmp/public/
ディレクトリにコピーします。
buildタスク設定
.tmp/publicディレクトリからすべてのディレクトリとファイルをwwwディレクトリにコピーします。
CSSファイルをminifyし、
.tmp/public/min/
ディレクトリに配置します。
LESSファイルをCSSにコンパイルします。
assets/styles/importer.less
のみがコンパイルされます。これにより、自分で順序を制御できます(つまり、他のスタイルシートの前に、依存関係、mixin、変数、リセットなどをインポートできます)。
JavaScriptファイル用の
<script>
タグとCSSファイル用の<link>
タグを自動的に挿入します。また、プリコンパイルされたテンプレートを含む出力ファイルを<script>
タグを使用して自動的にリンクします。このタスクの詳細については、こちらをご覧ください。重要な点は、スクリプトとスタイルシートの挿入は、<!--SCRIPTS--><!--SCRIPTS END-->
および/または<!--STYLES--><!--STYLES END-->
タグを含むファイルでのみ実行されることです。これらは、新しいSailsプロジェクトのデフォルトのviews/layouts/layout.ejsファイルに含まれています。プロジェクトでリンカーを使用しない場合は、これらのタグを削除するだけでかまいません。
ディレクトリを同期させるためのGruntタスクです。grunt-contrib-copyと非常によく似ていますが、実際に変更されたファイルのみをコピーしようとします。具体的には、
assets/
フォルダーから.tmp/public/
にファイルを同期し、すでにそこにあるものをすべて上書きします。
このGruntタスクは、フロントエンドJavaScriptファイルの>=ES6構文を、古いブラウザと互換性のあるコードにトランスパイルするように構成されています。
クライアント側のJavaScriptアセットをminifyします。デフォルトでは、このタスクは、すべての関数名と変数名を「マングル」します(大幅に短い名前に変更するか、完全に削除します)。これは通常、コードを大幅に小さくするため望ましいですが、場合によっては予期しない結果につながる可能性があります(特に、オブジェクトのコンストラクターが特定の名前を持つことを期待する場合)。この動作をオフにするか変更するには、このタスクを設定するときに
mangle
オプションを使用してください。
監視対象のファイルパターンが追加、変更、または削除されるたびに、定義済みのタスクを実行します。
assets/
フォルダー内のファイルの変更を監視し、適切なタスク(例:LESSコンパイル)を再実行します。これにより、Sailsサーバーを再起動せずに、アセットへの変更がアプリに反映されるのを確認できます。