syncpack
Version:
Manage multiple package.json files, such as in Lerna Monorepos and Yarn/Pnpm Workspaces
38 lines (37 loc) • 1.61 kB
JavaScript
exports.__esModule = true;
exports.getConfig = void 0;
var cosmiconfig_1 = require("cosmiconfig");
var expect_more_1 = require("expect-more");
var is_semver_1 = require("../commands/lib/is-semver");
var constants_1 = require("../constants");
exports.getConfig = function (program) {
var rcSearch = cosmiconfig_1.cosmiconfigSync('syncpack').search();
var rcFile = expect_more_1.isObject(rcSearch) && expect_more_1.isObject(rcSearch.config) ? rcSearch.config : {};
var rcOptions = expect_more_1.isObject(rcFile.options) ? rcFile.options : {};
var getOption = function (name, isValid) {
if (isValid(program[name])) {
return program[name];
}
if (isValid(rcOptions[name])) {
return rcOptions[name];
}
return constants_1.DEFAULT_CONFIG[name];
};
var filter = getOption('filter', expect_more_1.isNonEmptyString);
var config = {
dev: getOption('dev', expect_more_1.isBoolean),
filter: expect_more_1.isRegExp(filter) ? filter : new RegExp(filter),
indent: getOption('indent', expect_more_1.isNonEmptyString),
peer: getOption('peer', expect_more_1.isBoolean),
prod: getOption('prod', expect_more_1.isBoolean),
semverRange: getOption('semverRange', is_semver_1.isValidSemverRange),
source: getOption('source', expect_more_1.isArray)
};
if (program.prod || program.dev || program.peer) {
config.prod = Boolean(program.prod);
config.dev = Boolean(program.dev);
config.peer = Boolean(program.peer);
}
return config;
};
;