UNPKG

syncpack

Version:

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

45 lines (44 loc) 2.18 kB
"use strict"; exports.__esModule = true; exports.getWrappers = void 0; var get_packages_1 = require("@manypkg/get-packages"); var fs_extra_1 = require("fs-extra"); var glob_1 = require("glob"); var path_1 = require("path"); var constants_1 = require("../../constants"); var getPatternsFromConfig = function (fileName, propName) { var filePath = path_1.resolve(process.cwd(), fileName); var config = fs_extra_1.readJsonSync(filePath, { throws: false }); var isNonEmptyArray = config && config[propName] && config[propName].length > 0; return isNonEmptyArray ? [process.cwd()].concat(config[propName]).map(function (dirPath) { return path_1.join(dirPath, 'package.json'); }) : null; }; var getPnpmPatterns = function () { try { var config = get_packages_1.getPackagesSync(process.cwd()); var isNonEmptyArray = config && config.tool === 'pnpm' && config.packages.length > 0; return isNonEmptyArray ? [config.root].concat(config.packages).map(function (pkg) { return path_1.join(pkg.dir, 'package.json'); }) : null; } catch (e) { return null; } }; var hasCliPatterns = function (program) { return program.source && program.source.length > 0; }; var getCliPatterns = function (program) { return program.source; }; var getYarnPatterns = function () { return getPatternsFromConfig('package.json', 'workspaces'); }; var getLernaPatterns = function () { return getPatternsFromConfig('lerna.json', 'packages'); }; var getDefaultPatterns = function () { return constants_1.ALL_PATTERNS; }; var resolvePattern = function (pattern) { return glob_1.sync(pattern, { absolute: true }); }; var reduceFlatArray = function (all, next) { return all.concat(next); }; var createWrapper = function (filePath) { return ({ contents: fs_extra_1.readJsonSync(filePath), filePath: filePath }); }; exports.getWrappers = function (program) { return (hasCliPatterns(program) ? getCliPatterns(program) : getYarnPatterns() || getPnpmPatterns() || getLernaPatterns() || getDefaultPatterns()) .map(resolvePattern) .reduce(reduceFlatArray, []) .map(createWrapper); };