Is this the right way to get lite-server to recognize the "server.index" override in bs-config.js?

999 Views Asked by At

lite-server seems to be ignoring my attempt to override the default index.

I have bs-config.json:

{
  "server": {
    "baseDir": "src",
    "index": "/index.3.html",
    "routes": {
      "/node_modules": "node_modules"
    }
  }
}

I am using lite-server version 2.3.0, like this:

> lite-server -c=bs-config.json

browser-sync config **

{ injectChanges: false,
  files: [ './**/*.{html,htm,css,js}' ],
  watchOptions: { ignored: 'node_modules' },
  server:
   { baseDir: 'src',
     middleware: [ [Function], [Function] ],
     directory: true,
     index: '/index.3.html',
     routes: { '/node_modules': 'node_modules' 
    }
  }
}

In the console log output above, it recognizes the bs-config.json index default of "index.3.html", however, when the browser requests "GET http://localhost", the console shows it is trying to serve index.html instead of index.3.html.

[Browsersync] Serving files from: src
[Browsersync] Watching files...
17.09.04 22:35:51 404 GET /index.html

I have also tried supplying bs-config.js:

"use strict";

module.exports = {
  "server": {
    "baseDir": "src",
    index: "i/index.3.html",
    "directory":true,
    "routes": {
      "/node_modules": "node_modules"
    }
    // middleware,: {
    //   // overrides the second middleware default with new settings
    //   1: require('connect-history-api-fallback')({index: '/index.3.html', verbose: true})
    // }
  }
}

and running lite-server with:

> lite-server -c=bs-config.js

but the behavior is the same.

Question: how do I override bs-config's server.index for lite-server?

1

There are 1 best solutions below

0
On

lite-server's config-default.js sets index in it's 2nd middleware "fallback" function. This seems to be overring bs-config setting.

So the solution seems to be, override the middleware to set index as desired.

bs-config.js:

module.exports = {
  "server": {
    "baseDir": "src",
    "routes": {
      "/node_modules": "node_modules"
    },
    middleware: {
      // overrides the second middleware default with new settings
      1: require('connect-history-api-fallback')({
          index: '/index.3.html', 
          htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'] // systemjs workaround})
    }
  }
}

Notes: 1. If a future version of lite-server changes it's default-config's middleware to put the index fallback in a different index position of the middleware function array, or to set different response headers, then this bs-config solution will need to be changed accordingly.

references: Browserync Docs: https://browsersync.io/docs/options

lite-server: https://github.com/johnpapa/lite-server