syncpack
Version:
Manage multiple package.json files, such as in Lerna Monorepos and Yarn/Pnpm Workspaces
45 lines (44 loc) • 2.18 kB
JavaScript
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);
};
;