在Angular 2应用程序中无法更改lite-server的基础文件夹

我正在经历Angular 2的5分钟快速入门 。 但是,我的应用程序驻留在src/文件夹中,而不是存储在我的存储库的根目录下,当我运行npm start ,应用程序正试图在根目录中find一个index.html文件。 我读了文件lite-server和文档显示,它使用BrowserSync和我可以重新configurationBrowserSync与我的库中的bs-config.json 。 我这样做,这是我的configuration看起来像:

 { "port": 8123, "server": { "baseDir": "./src" } } 

根据日志,它使用指定的configuration:

 [1] > todo-app-angular2@1.0.0 lite E:\GitHub\todo-app-angular2 [1] > lite-server "./bs-config.json" 

我也尝试了通过bs-config.js覆盖

 module.exports = { port: 8123, server: { baseDir: "./src" } }; 

然而,Angular应用程序仍然在端口3000上打开,而忽略了configuration中定义的baseDir。 我究竟做错了什么?

您应该使用名为bs-config.js (而不是bs-config.js文件)的文件,因为lite-server会尝试使用require函数加载模块。 该configuration应该是一个有效的节点模块:

 module.exports = { "port": 8123, "server": { "baseDir": "./src" } }; 

请参阅源代码中的以下行: https : //github.com/johnpapa/lite-server/blob/master/lib/lite-server.js#L20 。

该文件默认从用户的项目文件夹中加载。

编辑

经过深入挖掘,我的答案的第一部分依赖于github的代码,但不是使用npm install (版本1.3.4)实际安装的代码。

在这种情况下有两种select:

  • 港口
  • BASEDIR

使用这个命令将解决你的问题:

 $ lite-server --baseDir ./src --port 3333 

希望它能帮助你,Thierry

Thierry Templier的答案并不完全正确,您可以使用bs-config.jsonbs-config.jsconfiguration来调整您的浏览器同步configuration。 这就是我最初提出的以JIT(Just-In-Time)和AOT(Ahead-Of-Time)编译支持( bs-config.json ) 为例的angular2快速入门示例 。

 { "port": 8000, "server": ["app", "."] } 

从多个目录托pipe项目。

但是,我不喜欢这个解决scheme,因为通过覆盖json文件中的server部分,默认的middlewareconfiguration被同时覆盖。

因此,我以下面的方法结束,我采取了默认的lite-server的config-defaults.js文件,并修改它( bs-config.js ):

 'use strict'; var fallback = require('connect-history-api-fallback'); var log = require('connect-logger'); /* | For up-to-date information about the options: | http://www.browsersync.io/docs/options/ */ module.exports = { port: 8000, injectChanges: false, // workaround for Angular 2 styleUrls loading filters: ['./**/*.{html,htm,css,js}'], watchOptions: { ignored: 'node_modules' }, server: ['./', 'app'], middleware: [ log({ format: '%date %status %method %url' }), fallback({ index: '/index.html', htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'] // systemjs workaround }) ] };