指定されたパスのディレクトリリストを含むページを提供します。
これはNode.jsモジュールであり、npmレジストリを通じて利用できます。インストールはnpm install
コマンドを使用して行います。
$ npm install serve-index
var serveIndex = require('serve-index')
指定されたpath
内のディレクトリのインデックスを提供するミドルウェアを返します。
path
はreq.url
の値に基づいており、path
が'public'
の場合、req.url
が'/some/dir'
の場合、'public/some/dir'
を参照します。express
のようなものを使用している場合は、app.use
を使用してURLの「ベース」を変更できます(expressの例を参照)。
serve-indexは、オプションオブジェクトで次のプロパティを受け入れます。
このフィルター関数をファイルに適用します。デフォルトはfalse
です。filter
関数は、各ファイルに対して呼び出され、シグネチャはfilter(filename, index, files, dir)
です。filename
はファイルの名前、index
は配列インデックス、files
はファイルの配列、dir
はファイルが配置されている絶対パス(したがって、リストの対象となるディレクトリ)です。
隠しファイル(ドットファイル)を表示します。デフォルトはfalse
です。
アイコンを表示します。デフォルトはfalse
です。
CSSスタイルシートへのオプションパス。デフォルトは組み込みのスタイルシートです。
HTMLテンプレートへのオプションパス、またはHTML文字列をレンダリングする関数。デフォルトは組み込みのテンプレートです。
文字列が指定された場合、文字列はロードするファイルパスとして使用され、次のトークンがテンプレート内で置換されます。
{directory}
はディレクトリの名前。{files}
はファイルのリンクの順不同リストのHTML。{linked-path}
はディレクトリへのリンクのHTML。{style}
は指定されたスタイルシートと埋め込み画像。関数として指定された場合、関数はtemplate(locals, callback)
として呼び出され、callback(error, htmlString)
を呼び出す必要があります。以下は提供されるローカル変数です。
directory
は表示されているディレクトリです(/
はルートです)。displayIcons
はアイコンをレンダリングするかどうかのブール値です。fileList
はディレクトリ内のソートされたファイルの配列です。配列には次のプロパティを持つオブジェクトが含まれます。name
はファイルの相対名です。stat
はファイルのfs.Stats
オブジェクトです。path
はdirectory
への完全なファイルシステムパスです。style
はデフォルトのスタイルシート、またはstylesheet
オプションの内容です。viewName
はview
オプションで提供されるビュー名です。表示モード。tiles
およびdetails
が利用可能です。デフォルトはtiles
です。
var finalhandler = require('finalhandler')
var http = require('http')
var serveIndex = require('serve-index')
var serveStatic = require('serve-static')
// Serve directory indexes for public/ftp folder (with icons)
var index = serveIndex('public/ftp', {'icons': true})
// Serve up public/ftp folder files
var serve = serveStatic('public/ftp')
// Create server
var server = http.createServer(function onRequest(req, res){
var done = finalhandler(req, res)
serve(req, res, function onNext(err) {
if (err) return done(err)
index(req, res, done)
})
})
// Listen
server.listen(3000)
var express = require('express')
var serveIndex = require('serve-index')
var app = express()
// Serve URLs like /ftp/thing as public/ftp/thing
// The express.static serves the file contents
// The serveIndex is this module serving the directory
app.use('/ftp', express.static('public/ftp'), serveIndex('public/ftp', {'icons': true}))
// Listen
app.listen(3000)