Node.js 在angular2快速入门指南中使用lite服务器打开非默认浏览器
遵循了的TypeScript版本之后,我想知道是否可能,如果可能,如何配置lite服务器以启动默认浏览器以外的浏览器 似乎lite服务器将接受命令行args,通过Node.js 在angular2快速入门指南中使用lite服务器打开非默认浏览器,node.js,angular,launching,Node.js,Angular,Launching,遵循了的TypeScript版本之后,我想知道是否可能,如果可能,如何配置lite服务器以启动默认浏览器以外的浏览器 似乎lite服务器将接受命令行args,通过yargs.argv提供给它。而且,yargs似乎会尝试基于相当常见的标准(即,如果令牌以--开头,则表示参数名称,否则表示参数值)来解析命令行args,以获得argv。lite服务器将尝试使用它从argv获得的open属性,该属性最终通过[启动进程的节点包之一]启动浏览器。节点打开了吗?xdg-开放?不确定,只要我的假设(基于对几个流
yargs.argv
提供给它。而且,yargs
似乎会尝试基于相当常见的标准(即,如果令牌以--
开头,则表示参数名称,否则表示参数值)来解析命令行args,以获得argv
。lite服务器将尝试使用它从argv
获得的open
属性,该属性最终通过[启动进程的节点包之一]启动浏览器。节点打开了吗?xdg-开放?不确定,只要我的假设(基于对几个流程启动器的研究)是正确的,它们都可以选择使用一个参数来定义要启动的流程,那么现在对我来说就没有那么重要了。如果省略,将使用默认浏览器,因为要打开的文件类型是html,这就是所发生的情况
如果所有这些都是正确的,或者至少其要点是正确的,那么我似乎只需要在package.json
中定义的lite
命令末尾指定--打开chrome
,例如(假设chrome在我的路径中
--在win machine btw上工作)
所以有点像
"scripts": {
"tsc": "tsc",
"tsc:w": "tsc -w",
"lite": "lite-server",
"lite:c": "lite-server --open chrome",
"lite:f": "lite-server --open firefox ",
"start": "concurrent \"npm run tsc:w\" \"npm run lite\" "
},
如果这看起来毫无意义,我很抱歉,但我不会在电脑前测试几天,我需要知道我是否有答案,是否可以停止研究:)。谢谢
lite服务器
实际上正在使用浏览器同步
,因此您应该能够使用--browser
来实现这一点
"lite:c" : "lite-server --browser chrome --open local"
更新
lite服务器
项目已更新,以包含可配置的浏览器选择。我只是出于历史目的,支持安德的回答
lite服务器
的创建者,以某种标准方式配置所有浏览器同步
选项(.rc
文件建议)。所以,当你读到这个问题和答案时,它可能已经过时了
感谢Sasxa指出这一点
lite服务器
实际上正在使用浏览器同步
这对于为这个特定的问题找到解决方案是至关重要的(我忽略了这一点,或者把它当作琐碎的var sync=require('browser-sync').create();
…sync.init()
),这有点尴尬)
然而,这个答案不会像现在这样起作用,因为
。。。因此,您应该能够使用--browser
"lite:c" : "lite-server --browser chrome --open local"
“lite:c”:“lite服务器--浏览器chrome--打开本地”
…不是开箱即用的。事实证明,lite服务器
并没有使用browser
参数执行任何操作,而yargs
用于解析。我几乎编辑了Sasxa的答案,但认为它偏离太多,因为您确实无法使用浏览器同步
CLI<代码>lite服务器已在使用浏览器同步
API。特别是,正在调用,需要在其中指定选项。Angular 2 Quick start guide的package.json与浏览器同步命令行参数之间存在完全断开的连接
修复方法:
受Sasxa答案的启发,browser
参数将传递给yargs.argv
,值为chrome
lite server.js
必须进行修改才能将其传递给浏览器同步
。这可以添加为选项
对象上的属性
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 Quick Startpackage.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”
作为浏览器
值,以使chrome真正启动。我需要使用“chrome”
,而“googlechrome”
//在Chrome中打开站点
浏览器:“谷歌浏览器”
//在Chrome和Firefox中打开站点
浏览器:[“谷歌浏览器”、“火狐”]
命令行open
参数正由lite服务器使用,作为传递给浏览器同步的开始路径的一部分browser
对于指定要启动的所需浏览器来说,似乎在规范上是正确的,因为在browser sync
中该名称最终会使用它。此外,关于这一点,Sasxa的回答是不正确的,因为它假设--open local
会使浏览器同步
毫发无损。这实际上会导致路径损坏,因为lite服务器会使用它,并将其转换为类似\local\index.html
的路径,而不是\.\index.html
(如果未指定)。最近的更改(@2.1.0)允许您通过bs config.json
设置配置,包括浏览器:
{
"browser": "chrome"
}
{
"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"
}
}
或
如果要为每个broswer设置单独的脚本,可以在包.json中执行以下操作:
{
"browser": "chrome"
}
{
"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服务器维护人员的意图。以下是当前文件供参考。适用于Windows(和Mac)新手(不是很新手:):
您的第一个冲动可能是在项目目录中查找“bs config.json”。你不会找到的。你需要检查一下
sudo update-alternatives --config x-www-browser