更新
该lite-server
项目已更新以包含可配置的浏览器选择。我只是出于历史目的而保留它,并支持安德的回答。
的创建者lite-server
一直在寻求解决browser-sync
以某种标准方式配置所有选项的问题(.rc
建议的文件)。因此,当您阅读它时,这个问题和答案可能已经过时了。
感谢 Sasxa指出这一点......
lite-server
实际上是在使用browser-sync
...
这对于为这个特定问题提出解决方案至关重要(这有点令人尴尬,我忽略了或被认为是微不足道的var sync = require('browser-sync').create();
...... sync.init()
)。
但是,该答案不会按原样起作用,因为...
...所以你应该能够为此使用--browser
CLI 命令。
"lite:c" : "lite-server --browser chrome --open local"
...不能开箱即用。事实证明,lite-server
没有对用于解析的browser
参数做任何事情。yargs
我几乎编辑了 Sasxa 的答案,但认为它分歧太大,因为你真的不能使用browser-sync
CLI。 lite-server
已经在使用browser-sync
API。特别是,init()
正在被调用,并且browser
需要在那里指定选项。Angular 2 快速入门指南package.json
与命令行 arg之间存在完全脱节。browser-sync
browser
修复:
因此,受 Sasxa 回答的启发,browser
参数将被传递给yargs.argv
, 带有 value 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"
,而文档说“谷歌浏览器”......
// 在 Chrome 中打开网站
browser: "google chrome"
// 在 Chrome 和 Firefox 中打开网站
browser: ["google chrome", "firefox"]
命令行 open
参数被 使用lite-server
,作为startPath
传递给的一部分browser-sync
。 browser
对于指定要启动的所需浏览器似乎是规范正确的,因为它最终被browser-sync
. 此外,关于这一点,Sasxa 的回答是不正确的,因为假设--open local
它会browser-sync
毫发无伤。这实际上会导致路径损坏,因为它被 lite-server 消耗,并转换为类似 的路径\local\index.html
,而不是\.\index.html
未指定的路径。