ОБНОВЛЕНИЕ
Проект 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
там нужно указать опцию. Существует полное несоответствие между package.json
и browser-sync
руководства по быстрому запуску Angular 2 в отношении аргумента командной строки 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 Quick Start 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"
, тогда как в документах указано 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
целым и невредимым. Это фактически приведет к повреждению пути, потому что он используется lite-сервером и преобразуется в путь, подобный \local\index.html
, вместо \.\index.html
, если он не указан.
person
Eric Lease
schedule
18.01.2016