UNPKG

syncpack

Version:

Manage multiple package.json files, such as in Lerna Monorepos and Yarn/Pnpm Workspaces

38 lines (37 loc) 1.61 kB
"use strict"; 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; };