You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.6 KiB
98 lines
2.6 KiB
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
const path = require("path"); |
|
const fs_1 = require("fs"); |
|
const immutable_1 = require("immutable"); |
|
const utils = require("../utils"); |
|
const cli_options_1 = require("./cli-options"); |
|
const _ = require("../lodash.custom"); |
|
/** |
|
* $ browser-sync start <options> |
|
* |
|
* This commands starts the Browsersync servers |
|
* & Optionally UI. |
|
* |
|
* @param opts |
|
* @returns {Function} |
|
*/ |
|
function default_1(opts) { |
|
const flags = preprocessFlags(opts.cli.flags); |
|
const cwd = flags.cwd || process.cwd(); |
|
const maybepkg = path.resolve(cwd, "package.json"); |
|
let input = flags; |
|
if (flags.config) { |
|
const maybeconf = path.resolve(cwd, flags.config); |
|
if ((0, fs_1.existsSync)(maybeconf)) { |
|
const conf = require(maybeconf); |
|
input = _.merge({}, conf, flags); |
|
} |
|
else { |
|
utils.fail(true, new Error(`Configuration file '${flags.config}' not found`), opts.cb); |
|
} |
|
} |
|
else { |
|
if ((0, fs_1.existsSync)(maybepkg)) { |
|
const pkg = require(maybepkg); |
|
if (pkg["browser-sync"]) { |
|
console.log("> Configuration obtained from package.json"); |
|
input = _.merge({}, pkg["browser-sync"], flags); |
|
} |
|
} |
|
} |
|
return require("../") |
|
.create("cli") |
|
.init(input, opts.cb); |
|
} |
|
exports.default = default_1; |
|
/** |
|
* @param flags |
|
* @returns {*} |
|
*/ |
|
function preprocessFlags(flags) { |
|
return [ |
|
stripUndefined, |
|
legacyFilesArgs, |
|
removeWatchBooleanWhenFalse |
|
].reduce((flags, fn) => fn.call(null, flags), flags); |
|
} |
|
/** |
|
* Incoming undefined values are problematic as |
|
* they interfere with Immutable.Map.mergeDeep |
|
* @param subject |
|
* @returns {*} |
|
*/ |
|
function stripUndefined(subject) { |
|
return Object.keys(subject).reduce((acc, key) => { |
|
const value = subject[key]; |
|
if (typeof value === "undefined") { |
|
return acc; |
|
} |
|
acc[key] = value; |
|
return acc; |
|
}, {}); |
|
} |
|
/** |
|
* @param flags |
|
* @returns {*} |
|
*/ |
|
function legacyFilesArgs(flags) { |
|
if (flags.files && flags.files.length) { |
|
flags.files = flags.files.reduce((acc, item) => acc.concat((0, cli_options_1.explodeFilesArg)(item)), []); |
|
} |
|
return flags; |
|
} |
|
/** |
|
* `watch` is a CLI boolean so should be removed if false to |
|
* allow config to set watch: true |
|
* @param flags |
|
* @returns {any} |
|
*/ |
|
function removeWatchBooleanWhenFalse(flags) { |
|
if (flags.watch === false) { |
|
return (0, immutable_1.fromJS)(flags) |
|
.delete("watch") |
|
.toJS(); |
|
} |
|
return flags; |
|
} |
|
//# sourceMappingURL=command.start.js.map
|