Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cff5890bce | ||
|
|
6d9e23c5ac | ||
|
|
36d68485ab | ||
|
|
e40300aa86 | ||
|
|
5771318d78 | ||
|
|
d006e3a123 | ||
|
|
a2364a8abf | ||
|
|
90e39a9a4f | ||
|
|
480fdcc468 |
@@ -2,3 +2,4 @@ language: node_js
|
||||
node_js:
|
||||
- "0.8"
|
||||
- "0.10"
|
||||
- "0.11"
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
Previously `connect.directory()`.
|
||||
|
||||
[](https://travis-ci.org/expressjs/serve-index)
|
||||
|
||||
Usage:
|
||||
|
||||
```js
|
||||
|
||||
10
index.js
10
index.js
@@ -41,7 +41,7 @@ var defaultTemplate = join(__dirname, 'public', 'directory.html');
|
||||
* Stylesheet.
|
||||
*/
|
||||
|
||||
var stylesheet = join(__dirname, 'public', 'style.css');
|
||||
var defaultStylesheet = join(__dirname, 'public', 'style.css');
|
||||
|
||||
/**
|
||||
* Media types and the map for content negotiation.
|
||||
@@ -67,6 +67,7 @@ var mediaType = {
|
||||
* Options:
|
||||
*
|
||||
* - `hidden` display hidden (dot) files. Defaults to false.
|
||||
* - `view` display mode. 'titles' and 'details' are available. Defaults to titles.
|
||||
* - `icons` display icons. Defaults to false.
|
||||
* - `filter` Apply this filter function to files. Defaults to false.
|
||||
* - `template` Optional path to html template. Defaults to a built-in template.
|
||||
@@ -92,7 +93,8 @@ exports = module.exports = function directory(root, options){
|
||||
, view = options.view || 'tiles'
|
||||
, filter = options.filter
|
||||
, root = normalize(root + sep)
|
||||
, template = options.template || defaultTemplate;
|
||||
, template = options.template || defaultTemplate
|
||||
, stylesheet = options.stylesheet || defaultStylesheet;
|
||||
|
||||
return function directory(req, res, next) {
|
||||
if ('GET' != req.method && 'HEAD' != req.method) return next();
|
||||
@@ -130,7 +132,7 @@ exports = module.exports = function directory(root, options){
|
||||
|
||||
// not acceptable
|
||||
if (!type) return next(createError(406));
|
||||
exports[mediaType[type]](req, res, files, next, originalDir, showUp, icons, path, view, template);
|
||||
exports[mediaType[type]](req, res, files, next, originalDir, showUp, icons, path, view, template, stylesheet);
|
||||
});
|
||||
});
|
||||
};
|
||||
@@ -140,7 +142,7 @@ exports = module.exports = function directory(root, options){
|
||||
* Respond with text/html.
|
||||
*/
|
||||
|
||||
exports.html = function(req, res, files, next, dir, showUp, icons, path, view, template){
|
||||
exports.html = function(req, res, files, next, dir, showUp, icons, path, view, template, stylesheet){
|
||||
fs.readFile(template, 'utf8', function(err, str){
|
||||
if (err) return next(err);
|
||||
fs.readFile(stylesheet, 'utf8', function(err, style){
|
||||
|
||||
10
package.json
10
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "serve-index",
|
||||
"description": "Serve directory listings",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.2",
|
||||
"author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -13,12 +13,12 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"batch": "0.5.0",
|
||||
"negotiator": "0.4.2"
|
||||
"negotiator": "0.4.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"connect": "^2.13.0",
|
||||
"mocha": "^1.17.0",
|
||||
"should": "^3.0.0",
|
||||
"connect": "~2.14.1",
|
||||
"mocha": "~1.17.1",
|
||||
"should": "~3.1.3",
|
||||
"supertest": "~0.9.0"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
3
test/shared/styles.css
Normal file
3
test/shared/styles.css
Normal file
@@ -0,0 +1,3 @@
|
||||
body {
|
||||
color: #00ff00;
|
||||
}
|
||||
20
test/test.js
20
test/test.js
@@ -161,6 +161,26 @@ describe('directory()', function(){
|
||||
});
|
||||
});
|
||||
|
||||
describe('when setting a custom stylesheet', function () {
|
||||
var server;
|
||||
before(function () {
|
||||
server = createServer('test/fixtures', {'stylesheet': __dirname + '/shared/styles.css'});
|
||||
});
|
||||
after(function (done) {
|
||||
server.close(done);
|
||||
});
|
||||
|
||||
it('should respond with appropriate embedded styles', function (done) {
|
||||
request(server)
|
||||
.get('/')
|
||||
.set('Accept', 'text/html')
|
||||
.expect(200)
|
||||
.expect('Content-Type', /html/)
|
||||
.expect(/color: #00ff00;/)
|
||||
.end(done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('when set with trailing slash', function () {
|
||||
var server;
|
||||
before(function () {
|
||||
|
||||
Reference in New Issue
Block a user