无法更改 Angular 2 应用程序中 lite-server 的基本文件夹
Can't change the base folder for lite-server in Angular 2 application
我正在经历 5 minute quickstart of Angular 2。但是,我的应用程序驻留在 src/
文件夹中,而不是存储库的根目录中,当我 运行 npm start
应用程序试图在根目录中查找 index.html
文件时.我阅读了 lite-server
,文档显示它使用 BrowserSync
,我可以在我的存储库中使用 bs-config.json
重新配置 BrowserSync
。我这样做了,这就是我的配置:
{
"port": 8123,
"server": { "baseDir": "./src" }
}
根据日志,它正在使用指定的配置:
[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 上打开并且它忽略了配置中定义的 baseDir。我做错了什么?
您应该使用名为 bs-config.js
的文件(而不是 bs-config.json
文件),因为 lite-server 尝试使用 require
函数加载模块。配置应该是一个有效的节点模块:
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)
实际安装的代码
本例有两种选择:
- 端口
- baseDir
使用此命令将解决您的问题:
$ lite-server --baseDir ./src --port 3333
希望对你有帮助,
蒂埃里
Thierry Templier
的答案不太正确(不再),您可以使用 bs-config.json
或 bs-config.js
配置来调整浏览器同步配置。这是我最初为 angular2 quick start example 提出的,支持 JIT(即时)和 AOT(提前)编译 (bs-config.json
)
{
"port": 8000,
"server": ["app", "."]
}
从多个目录托管项目。
但是,我不喜欢这个解决方案,因为通过覆盖 json
文件中的 server
部分,默认的 middleware
配置同时被覆盖。
所以我以下面的方式结束,我取的是默认的lite-server's config-defaults.js
files and modified it instead (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
})
]
};
我正在经历 5 minute quickstart of Angular 2。但是,我的应用程序驻留在 src/
文件夹中,而不是存储库的根目录中,当我 运行 npm start
应用程序试图在根目录中查找 index.html
文件时.我阅读了 lite-server
,文档显示它使用 BrowserSync
,我可以在我的存储库中使用 bs-config.json
重新配置 BrowserSync
。我这样做了,这就是我的配置:
{
"port": 8123,
"server": { "baseDir": "./src" }
}
根据日志,它正在使用指定的配置:
[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 上打开并且它忽略了配置中定义的 baseDir。我做错了什么?
您应该使用名为 bs-config.js
的文件(而不是 bs-config.json
文件),因为 lite-server 尝试使用 require
函数加载模块。配置应该是一个有效的节点模块:
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)
本例有两种选择:
- 端口
- baseDir
使用此命令将解决您的问题:
$ lite-server --baseDir ./src --port 3333
希望对你有帮助, 蒂埃里
Thierry Templier
的答案不太正确(不再),您可以使用 bs-config.json
或 bs-config.js
配置来调整浏览器同步配置。这是我最初为 angular2 quick start example 提出的,支持 JIT(即时)和 AOT(提前)编译 (bs-config.json
)
{
"port": 8000,
"server": ["app", "."]
}
从多个目录托管项目。
但是,我不喜欢这个解决方案,因为通过覆盖 json
文件中的 server
部分,默认的 middleware
配置同时被覆盖。
所以我以下面的方式结束,我取的是默认的lite-server's config-defaults.js
files and modified it instead (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
})
]
};