静的ファイルサーバー
@adonisjs/static
パッケージを使用して、指定されたディレクトリから静的ファイルを提供できます。このパッケージには、HTTPリクエストをインターセプトしてファイルを提供するために、サーバーミドルウェアスタックに登録する必要があるミドルウェアが付属しています。
インストール
パッケージはweb
スターターキットとして事前に設定されています。ただし、他のスターターキットでも以下のコマンドを使用してインストールおよび設定できます。
以下のコマンドを使用してパッケージをインストールおよび設定します:
node ace add @adonisjs/static
-
検出されたパッケージマネージャーを使用して
@adonisjs/static
パッケージをインストールします。 -
adonisrc.ts
ファイル内に以下のサービスプロバイダーを登録します。{providers: [// ...他のプロバイダー() => import('@adonisjs/static/static_provider')]} -
config/static.ts
ファイルを作成します。 -
start/kernel.ts
ファイル内に以下のミドルウェアを登録します。server.use([() => import('@adonisjs/static/static_middleware')])
設定
静的ミドルウェアの設定はconfig/static.ts
ファイルに保存されます。
import { defineConfig } from '@adonisjs/static'
const staticServerConfig = defineConfig({
enabled: true,
etag: true,
lastModified: true,
dotFiles: 'ignore',
})
export default staticServerConfig
-
enabled
-
ミドルウェアを一時的に有効または無効にすることなく、ミドルウェアスタックから一時的に削除するかどうかを設定します。
-
acceptRanges
-
Accept-Range
ヘッダーは、ブラウザがダウンロードを再開する代わりにダウンロードを再開しようとする代わりに、中断されたファイルのダウンロードを再開することを許可します。acceptsRanges
をfalse
に設定することで、再開可能なダウンロードを無効にできます。デフォルトは
true
です。 -
cacheControl
-
Cache-Controlヘッダーを有効または無効にします。
cacheControl
が無効になっている場合、immutable
およびmaxAge
プロパティは無視されます。{cacheControl: true} -
dotFiles
-
public
ディレクトリ内のドットファイルのリクエストの扱い方を定義します。次のオプションのいずれかを設定できます。allow
:他のファイルと同じようにドットファイルを提供します。deny
:403
ステータスコードでリクエストを拒否します。ignore
:ファイルが存在しないかのように見せかけて404
ステータスコードで応答します。
{dotFiles: 'ignore'} -
etag
-
etagの生成を有効または無効にします。
{etag: true,} -
lastModified
-
Last-Modifiedヘッダーを有効または無効にします。ファイルのstat.mtimeプロパティがヘッダーの値として使用されます。
{lastModified: true,} -
immutable
-
Cache-Control
ヘッダーのimmutableディレクティブを有効または無効にします。デフォルトでは、immutable
プロパティは無効になっています。immutable
プロパティが有効になっている場合、キャッシュを有効にするためにmaxAge
プロパティを定義する必要があります。{immutable: true} -
maxAge
-
Cache-Control
ヘッダーのmax-ageディレクティブを定義します。値はミリ秒または時間表現文字列である必要があります。{maxAge: '30 mins'} -
headers
-
レスポンスに設定するヘッダーのオブジェクトを返す関数です。関数は第1引数としてファイルパス、第2引数としてfile statsオブジェクトを受け取ります。
{headers: (path, stats) => {if (path.endsWith('.mc2')) {return {'content-type': 'application/octet-stream'}}}}
静的ファイルの提供
ミドルウェアが登録されると、public
ディレクトリ内にファイルを作成し、ブラウザからファイルパスを使用してアクセスできます。たとえば、./public/css/style.css
ファイルはhttp://localhost:3333/css/style.css
のURLを使用してアクセスできます。
public
ディレクトリ内のファイルはアセットバンドラーを使用してコンパイルまたはビルドされません。フロントエンドのアセットをコンパイルする場合は、それらをresources
ディレクトリに配置し、アセットバンドラーを使用する必要があります。
静的ファイルの本番ビルドへのコピー
/public
ディレクトリ内に格納されている静的ファイルは、node ace build
コマンドを実行すると自動的にbuild
フォルダにコピーされます。
パブリックファイルのコピーのルールはadonisrc.ts
ファイルで定義されています。
{
metaFiles: [
{
pattern: 'public/**',
reloadServer: false
}
]
}