TypeScriptバージョンの Angular 2クイックスタートガイド に従っているので、それが可能かどうか、もしそうなら、デフォルト以外のブラウザを起動するようにlite-serverを設定する方法について疑問に思いました。
Lite-serverはコマンドライン引数を取り、yargs.argv
を介して提供されるようです。 yargs
は、かなり一般的な標準に基づいてコマンドライン引数を解析しようとするようです(つまり、トークンが--
で始まる場合、引数名を表し、そうでない場合は引数値を表します)argv
。 lite-serverは、open
から取得するargv
プロパティを使用しようとします。これは、最終的に[プロセスを起動するノードパッケージの1つ]を介してブラウザを起動します。ノードオープン? xdg -open?確かではありませんが、(これらのプロセスランチャーのいくつかを見ることに基づく)私の仮定が正しい限り、私にとってはそれほど重要ではありません。省略すると、開くファイルのタイプがhtmlであるため、デフォルトのブラウザーが使用されます。
すべてが正しい場合、または少なくともその要点であれば、たとえば--open chrome
を指定するだけでよいようです(chromeがPATH
-winマシンでの作業(tww)、package.json
で定義されているlite
コマンドの最後。
のようなもの...
"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\" "
},
これが異常に思える場合は謝罪しますが、数日間これをテストできるコンピューターにはいません。答えがあり、調査を停止できるかどうかを知る必要があります:)。ありがとう!
最近の変更(@ 2.1.0)では、ブラウザを含む設定をbs-config.json
:
{
"browser": "chrome"
}
または
{
"browser": ["chrome","firefox"]
}
ブラウザごとに個別のスクリプトを設定する場合は、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 ファイルを次に示します。
[〜#〜] update [〜#〜]
_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
オプションを指定する必要があります。 browser
コマンドライン引数に関して、Angular 2クイックスタートガイドの_package.json
_と_browser-sync
_の間には完全な切断があります。
Sasxaの答えに触発されて、browser
引数は値chrome
で_yargs.argv
_に渡されます。
_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
引数に次の引数値を使用できます。
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\" "
},
_
実際に起動するには、chromeを取得するためにbrowser
の値として_"google chrome"
_を使用する必要があります。私は_"chrome"
_を使用する必要がありましたが、 docs 「google chrome」と言います...
// Chromeでサイトを開きます
_
browser: "google chrome"
_// Chrome&Firefoxでサイトを開きます
_
browser: ["google chrome", "firefox"]
_
コマンドラインopen
引数は、_lite-server
_によってstartPath
の一部として使用されており、_browser-sync
_。 browser
は最終的に_browser-sync
_でその名前で使用されているため、起動するブラウザーを指定するために標準的に正しいようです。また、これに関しては、_--open local
_は無傷で_browser-sync
_になるとSasxaの答えは間違っていました。これは、lite-serverによって消費され、指定されていない場合は_\local\index.html
_ではなく_\.\index.html
_のようなパスに変換されるため、実際に破損したパスを引き起こします。
MacOSの場合、「bs-config.json」ファイルで大文字と小文字を区別する値を使用する必要がありました。
{
"browser": "Google Chrome"
}
プロジェクトフォルダーにファイル名「bs-config.json」を作成し、そのファイルに以下のコードを追加します。
{
"browser": ["chrome","firefox"] //to make chrome to default browser
}
lite-server
は実際にはbrowser-sync
を使用しているため、--browser
CLIコマンド を使用できるはずです。
"lite:c" : "lite-server --browser chrome --open local"
update-alternatives
の使用このプロセスをグローバルに変更できることを確認できました ここのコマンド 。現在、lite-server
は browser-sync
を使用します opn
を使用します xdg-open
の独自のコピーをバンドルします 。これを設定するには、
Sudo update-alternatives --config x-www-browser
望ましいと思いました。これはすべてのangle2の例で有効になり、OSの残りの部分でも持続します。シークレットモードでリンクを開くこともできます(上記のリンクの手順)。
Windows(およびMac)初心者(初心者ではない):最初の衝動は、プロジェクトディレクトリ内で「bs-config.json」を探すことです。あなたはそれを見つけることができません。ファイルを作成する必要がありますルートプロジェクトディレクトリの下にbs-config.json =。その中で、上記の答えに従って、好みのブラウザを指定します-i.e。、:{"browser": "chrome"}
その理由は、ファイルlite-server.jsが上記の構成ファイルを探すからです。見つからない場合は、lite-serverのデフォルトを使用して、WindowsシステムのInternet Explorerをデフォルトにします。