更新
lite-server 项目已更新以包含可配置的浏览器选择。我只是出于历史目的而留下这个,并支持安德的回答。
lite-serverhas been looking to address the issue 的创建者以某种标准方式配置所有browser-sync 选项(建议使用.rc 文件)。因此,当您阅读它时,这个问题和答案可能已经过时了。
感谢 Sasxa 指出这一点...
lite-server 实际上是在使用browser-sync ...
这对于为这个特定问题提出解决方案至关重要(这有点令人尴尬,我忽略了或将其视为微不足道的var sync = require('browser-sync').create(); ...sync.init())。
但是,该答案不会按原样起作用,因为...
...所以你应该可以使用--browserCLI command。
"lite:c" : "lite-server --browser chrome --open local"
...不能开箱即用。事实证明,lite-server 没有对 browser 用于解析出的 browser 参数做任何事情。我几乎编辑了 Sasxa 的答案,但认为它分歧太大,因为你真的不能使用 browser-sync CLI。 lite-server 已经在使用 browser-sync API。特别是,正在调用init(),并且需要在此处指定browser 选项。关于 browser 命令行参数,Angular 2 快速入门指南的 package.json 和 browser-sync 之间存在完全脱节。
修复:
受 Sasxa 回答的启发,browser 参数将被传递给 yargs.argv,值为 chrome。
必须修改lite-server.js 以将其传递给browser-sync。这可以作为options 对象的属性添加...
var options =
{
openPath: openPath,
files: argv.files ? argv.files : [
openPath + '/**/*.html',
openPath + '/**/*.css',
openPath + '/**/*.js'
],
baseDir: argv.baseDir || './',
fallback: '/' + openPath + '/index.html',
browser: argv.browser || "default" // add this line, ~line 24
};
然后,当调用 browser-sync 的 init() 时,指定 browser 选项。
sync.init({
port: argv.port || 3000,
server: {
baseDir: options.baseDir,
middleware: [
log(),
historyFallback({ index: options.fallback })
]
},
files: options.files,
browser: options.browser // add this line, ~line 49
});
现在,回到 Angular 2 快速入门 package.json,以下参数值可用于 browser 参数:
像这样……
"scripts": {
"tsc": "tsc",
"tsc:w": "tsc -w",
"lite": "lite-server",
"lite:c": "lite-server --browser \"chrome\"",
"lite:ff": "lite-server --browser \"firefox\"",
"lite:ie": "lite-server --browser \"iexplore\"",
"lite:garbage": "lite-server --browser \"garbage\"",
"start": "concurrent \"npm run tsc:w\" \"npm run lite:c\" ",
"//": "start default browser:",
"//": "concurrent \"npm run tsc:w\" \"npm run lite\" ",
"//": "start chrome:",
"//": "concurrent \"npm run tsc:w\" \"npm run lite:c\" ",
"//": "start firefox:",
"//": "concurrent \"npm run tsc:w\" \"npm run lite:ff\" ",
"//": "start ie:",
"//": "concurrent \"npm run tsc:w\" \"npm run lite:ie\" ",
"//": "if you want to see an invalid browser arg value, try...",
"//": "concurrent \"npm run tsc:w\" \"npm run lite:garbage\" "
},
一些最后的想法
您可能需要使用"google chrome" 作为browser 值才能让chrome 真正启动。我需要使用"chrome",而docs 说“google chrome”...
// 在 Chrome 中打开网站
browser: "google chrome"
// 在 Chrome 和 Firefox 中打开网站
browser: ["google chrome", "firefox"]
命令行 open 参数被lite-server 使用,作为传递给browser-sync 的startPath 的一部分。 browser 似乎对于指定要启动的所需浏览器是正确的,因为它最终被 browser-sync 中的该名称使用。此外,关于这一点,Sasxa 的回答是不正确的,因为假设 --open local 会安然无恙地到达 browser-sync。这实际上会导致路径损坏,因为它被 lite-server 使用,并且如果未指定,则转换为类似 \local\index.html 的路径,而不是 \.\index.html。