UNPKG

ngm-cli

Version:

Simple way to manage angular submodules in one repository

95 lines 8.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // import { TsmOptions } from '../types'; const constants_1 = require("./constants"); const fs = require('fs'); const path = require('path'); const tsconfig = require('tsconfig'); const readPkg = require('read-pkg'); // todo: order by cross dependencies // todo: add --use-local-dependencies alias --local // should in the same folder as dist const _tmp = '.tmp'; /** * Will try to find package.json in src folder * if not found will search in 1st level of directories * Returns list of directories with package.json * project - string, relative path to folder */ function findSubmodules(project, options) { return listDirs(project) .then(dirs => orderByCrossDeps(dirs .filter(dir => isModuleRoot(dir)) .map(dir => ({ dir, tsconfig: tsconfig.loadSync(dir) })) .map(opt => resolveOptions(project, opt)))); } exports.findSubmodules = findSubmodules; function listDirs(project) { return Promise.resolve([project].concat(fs .readdirSync(path.resolve(project)) .filter(file => fs.statSync(path.resolve(project, file)) .isDirectory()) .map(dir => path.join(project, dir)))); } function isModuleRoot(dir) { if (fs.existsSync(path.join(dir, constants_1.pkgFileName))) { return !!tsconfig.resolveSync(dir); } return false; } function resolveOptions(project, opt) { const tsOutDir = opt.tsconfig.config.compilerOptions.outDir; const tsConfigDir = path.dirname(opt.tsconfig.path); const relTsOutDir = path.relative(constants_1.ROOT, path.resolve(tsConfigDir, tsOutDir)); const moduleDir = path.relative(project, opt.dir); // submodule root const src = opt.dir; // tsc out dir const dist = relTsOutDir.indexOf(moduleDir) == -1 ? path.join(relTsOutDir, moduleDir) : relTsOutDir; // convert tsout ( '../dist' --> '../.tmp' ) const _distParsed = path.parse(tsOutDir); let tmp = moduleDir && moduleDir === _distParsed.base // '../dist/module-1' ? path.join(src, path.format(Object.assign(path.parse(_distParsed.dir), { base: _tmp })), moduleDir) // '../dist' : path.resolve(src, path.format(Object.assign({}, _distParsed, { base: _tmp }))); // tsconfig project return { src, dist, tmp, tsconfig: opt.tsconfig, project: path.relative(constants_1.ROOT, tsConfigDir), pkg: readPkg.sync(src) }; } // todo: split it in // 1. building cross dependencies // 2. sorting by cross dependencies count /** * */ function orderByCrossDeps(options) { const pkgName = options.map(opt => opt.pkg.name); return options .map(option => { option.cross = []; constants_1.dependencyKeys.forEach(depKey => { if (!option.pkg[depKey]) { return; } pkgName.forEach(name => { if (name in option.pkg[depKey]) { option.cross.push(name); } }); }); return option; }) .sort((a, b) => { if (a.cross.length === b.cross.length) { return 0; } return a.cross.length > b.cross.length ? 1 : -1; }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibW9kdWxlcy1yZXNvbHV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3N1Ym1vZHVsZXMtcmVzb2x1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUF5QztBQUN6QywyQ0FBZ0U7QUFFaEUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXBDLG9DQUFvQztBQUNwQyxtREFBbUQ7QUFFbkQsb0NBQW9DO0FBQ3BDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUVwQjs7Ozs7R0FLRztBQUNILHdCQUErQixPQUFlLEVBQUUsT0FBNEI7SUFDMUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQzVCLElBQUk7U0FDSCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUM7U0FDckQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQzNDLENBQUM7QUFDTixDQUFDO0FBUkQsd0NBUUM7QUFFRCxrQkFBa0IsT0FBZTtJQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDcEIsQ0FBQyxPQUFPLENB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