Skip to content

Commit b5cc56e

Browse files
committed
feat: add directory listing for serve-static mode
1 parent 393309b commit b5cc56e

File tree

4 files changed

+29
-42
lines changed

4 files changed

+29
-42
lines changed

lib/browser-sync.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -366,15 +366,16 @@ BrowserSync.prototype.serveFile = function(path, props) {
366366

367367
/**
368368
* Add middlewares on the fly
369-
* @param {{route: string, handle: function, id?: string}}
370369
*/
371370
BrowserSync.prototype._addMiddlewareToStack = function(entry) {
372371
var bs = this;
373-
if (bs.options.get("mode") === "proxy") {
374-
bs.app.stack.splice(bs.app.stack.length - 1, 0, entry);
375-
} else {
376-
bs.app.stack.push(entry);
377-
}
372+
373+
/**
374+
* additional middlewares are always appended -1,
375+
* this is to allow the proxy middlewares to remain,
376+
* and the directory index to remain in serveStatic/snippet modes
377+
*/
378+
bs.app.stack.splice(bs.app.stack.length - 1, 0, entry);
378379
};
379380

380381
var _addMiddlewareCount = 0;

lib/server/static-server.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ var serveIndex = require("serve-index");
99

1010
/**
1111
* @param {BrowserSync} bs
12-
* @param scripts
1312
* @returns {*}
1413
*/
1514
module.exports = function createServer(bs) {
@@ -31,7 +30,10 @@ module.exports = function createServer(bs) {
3130

3231
return mw.concat({
3332
route: "",
34-
handle: serveIndex(resolve(basedirs[0]), { icons: true }),
33+
handle: serveIndex(resolve(basedirs[0]), {
34+
icons: true,
35+
view: "details"
36+
}),
3537
id: "Browsersync Server Directory Middleware"
3638
});
3739
})

lib/server/utils.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ var List = require("immutable").List;
1313
var snippet = require("./../snippet").utils;
1414
var _ = require("../lodash.custom");
1515
var serveStatic = require("serve-static");
16+
var serveIndex = require("serve-index");
1617
var logger = require("../logger");
1718
var snippetUtils = require("../snippet").utils;
1819
var lrSnippet = require("resp-modifier");
@@ -224,15 +225,24 @@ var serverUtils = {
224225
var beforeMiddlewares = userMiddlewares.filter(function(x) {
225226
return x.override;
226227
});
227-
var afterMiddlewares = userMiddlewares.filter(function(x) {
228-
return !x.override;
229-
});
228+
var afterMiddlewares = userMiddlewares
229+
.filter(function(x) {
230+
return !x.override;
231+
})
232+
.concat(
233+
bs.options.get("mode") !== "proxy" && {
234+
id: "Browsersync 404/index support",
235+
route: "",
236+
handle: serveIndex(bs.options.get("cwd"), {
237+
icons: true,
238+
view: "details"
239+
})
240+
}
241+
);
230242

231-
return [].concat(
232-
beforeMiddlewares,
233-
defaultMiddlewares,
234-
afterMiddlewares
235-
);
243+
return []
244+
.concat(beforeMiddlewares, defaultMiddlewares, afterMiddlewares)
245+
.filter(Boolean);
236246

237247
function normaliseMiddleware(item) {
238248
/**

test/specs/e2e/server/e2e.server.dirs.js

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -133,29 +133,3 @@ describe("E2E server test with base dir array option + directory", function() {
133133
});
134134
});
135135
});
136-
137-
describe("E2E server test with base dir array = false", function() {
138-
it("should ignore the directory option if a falsey value was given", function(done) {
139-
browserSync.reset();
140-
141-
var config = {
142-
server: {
143-
baseDir: ["test", "app"],
144-
directory: false
145-
},
146-
logLevel: "silent",
147-
open: false
148-
};
149-
150-
browserSync.init(config, function(err, bs) {
151-
request(bs.server)
152-
.get("/")
153-
.set("accept", "text/html")
154-
.expect(200)
155-
.end(function(err, res) {
156-
assert.notInclude(res.text, "listing directory /");
157-
done();
158-
});
159-
});
160-
});
161-
});

0 commit comments

Comments
 (0)