在遵循Angular 2 Quick Start guide的TypeScript版本后,我想知道是否可行,如果是,如何配置lite-server以启动默认浏览器以外的浏览器。
似乎lite-server将采用命令行参数,通过yargs.argv
提供给它。并且似乎yargs
将尝试基于相当普通的标准来解析命令行参数(即,如果令牌以--
开头,则它表示参数名称,否则为参数值)以获取{{1 }}。 lite-server将尝试使用从argv
获取的open
属性,这最终是通过[启动进程的其中一个节点包]启动浏览器。点开? xdg -open?不确定,对我来说并不是真的那么重要,只要我的假设(基于查看其中几个过程发射器)是正确的,他们都可以选择接受定义要启动的过程的参数。如果省略,将使用默认浏览器,因为要打开的文件类型是html,这就是发生的情况。
如果所有这些都是正确的,或者至少是它的要点,那么我似乎只需要指定argv
,例如(假设chrome在我的--open chrome
中 - 在win机器上工作btw),在PATH
中定义的lite
命令的末尾。
就像......
package.json
我道歉,如果这似乎是无聊的,但我不会在计算机上,我可以测试这几天,我需要知道我是否有答案,可以停止研究这个:)。谢谢!
答案 0 :(得分:23)
最近的更改(@ 2.1.0)允许您通过bs-config.json
设置您的配置,包括浏览器:
{
"browser": "chrome"
}
或
{
"browser": ["chrome","firefox"]
}
如果您要为每个broswer设置单独的脚本,可以在package.json
中执行以下操作:
{
"scripts": {
"lite": "lite-server",
"lite:ff": "lite-server --c bs-firefox.json",
"lite:c": "lite-server --c bs-chrome.json",
"lite:ie": "lite-server --c bs-ie.json",
"lite:all": "lite-server --c bs-all.json"
}
}
虽然它不是最好的解决方案,因为你必须在多个文件中复制和维护你的配置,但它似乎是lite-server维护者的意图。这是当前的lite-server.js文件以供参考。
答案 1 :(得分:3)
<强>更新强>
lite-server
项目已更新,其中包含可配置的浏览器选择。我只是出于历史目的离开这个,并支持恩德的回答。
lite-server
has been looking to address the issue的创建者以某种标准方式配置所有browser-sync
选项(建议使用.rc
文件)。因此,当您阅读它时,这个问题和答案可能已经过时了。
谢谢Sasxa 指出这个......
lite-server
实际上正在使用browser-sync
...
这对于为这个特定问题提出解决方案至关重要(我有点尴尬,我忽略或注销为琐碎var sync = require('browser-sync').create();
...... sync.init()
)。
然而,这个答案将无法正常运作,因为......
...所以你应该可以使用
--browser
CLI command。
"lite:c" : "lite-server --browser chrome --open local"
......开箱即用。事实证明,lite-server
没有对使用browser
解析的yargs
参数做任何事情。我几乎编辑了Sasxa的答案,但认为它分歧太大了,因为你真的不能使用browser-sync
CLI。 lite-server
已使用browser-sync
API。特别是,正在调用init()
,并且需要在那里指定browser
选项。关于package.json
命令行arg,Angular 2快速入门指南的browser-sync
和browser
之间存在完全脱节。
受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
};
然后,当调用浏览器同步的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
参数:
chrome
firefox
iexplore
"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&amp;中打开网站火狐
browser: ["google chrome", "firefox"]
open
正在使用命令行 lite-server
参数,作为传递给{的startPath
的一部分{1}}。 browser-sync
似乎正确地指定了要启动的所需浏览器,因为它最终被browser
中的名称使用。另外,关于这一点,Sasxa的回答是不正确的,假设browser-sync
会使--open local
毫发无损。这实际上会导致损坏的路径,因为它被lite-server使用,并且如果未指定,则转换为browser-sync
之类的路径,而不是\local\index.html
。
答案 2 :(得分:2)
lite-server
实际上正在使用browser-sync
,因此您应该可以使用--browser
CLI command。
"lite:c" : "lite-server --browser chrome --open local"
答案 3 :(得分:2)
制作文件名&#34; bs-config.json&#34;在您的项目文件夹中,将以下代码添加到该文件中:
{
"browser": ["chrome","firefox"] //to make chrome to default browser
}
答案 4 :(得分:2)
对于MacOS,我必须在&#34; bs-config.json&#34;中使用区分大小写的值。文件:
{
"browser": "Google Chrome"
}
答案 5 :(得分:0)
对于Windows(和Mac)新手(而不是新手:): 您的第一个冲动可能是在项目目录中查找“bs-config.json”。你找不到它。您需要在根项目目录 下创建文件 ,并将其命名为 bs-config.json 。根据上面的答案,你可以在其中指定你喜欢的浏览器-i.e。,:{“browser”:“chrome” }
原因是文件 lite-server.js 查找上述配置文件;如果它没有找到它,它使用lite-server默认值,在Windows系统上默认Internet Explorer。
答案 6 :(得分:0)
update-alternatives
我能够确认您可以通过此command here全局更改此流程。目前lite-server
使用的browser-sync
使用opn
bundles its own copy of a xdg-open
。您可以使用
sudo update-alternatives --config x-www-browser
我发现它更可取。它对所有angular2示例都有效,并且对于OS的其余部分也会持续存在。您也可以通过隐身方式打开链接(上面链接中的说明)。