@nx/react-native
Version:
78 lines (77 loc) • 3.48 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = syncDepsExecutor;
exports.syncDeps = syncDeps;
exports.displayNewlyAddedDepsMessage = displayNewlyAddedDepsMessage;
const path_1 = require("path");
const pc = require("picocolors");
const devkit_1 = require("@nx/devkit");
const find_all_npm_dependencies_1 = require("../../utils/find-all-npm-dependencies");
async function* syncDepsExecutor(options, context) {
const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
const workspacePackageJsonPath = (0, path_1.join)(context.root, 'package.json');
const projectPackageJsonPath = (0, path_1.join)(context.root, projectRoot, 'package.json');
const workspacePackageJson = (0, devkit_1.readJsonFile)(workspacePackageJsonPath);
const projectPackageJson = (0, devkit_1.readJsonFile)(projectPackageJsonPath);
displayNewlyAddedDepsMessage(context.projectName, await syncDeps(context.projectName, projectPackageJson, projectPackageJsonPath, workspacePackageJson, context.projectGraph, typeof options.include === 'string'
? options.include.split(',')
: options.include, typeof options.exclude === 'string'
? options.exclude.split(',')
: options.exclude, options.all));
yield { success: true };
}
async function syncDeps(projectName, projectPackageJson, projectPackageJsonPath, workspacePackageJson, projectGraph = (0, devkit_1.readCachedProjectGraph)(), include = [], exclude = [], all = false) {
let npmDeps = all
? Object.keys(workspacePackageJson.dependencies || {})
: (0, find_all_npm_dependencies_1.findAllNpmDependencies)(projectGraph, projectName);
let npmDevdeps = all
? Object.keys(workspacePackageJson.devDependencies || {})
: [];
const newDeps = [];
let updated = false;
if (!projectPackageJson.dependencies) {
projectPackageJson.dependencies = {};
updated = true;
}
if (include && include.length) {
npmDeps.push(...include);
}
if (exclude && exclude.length) {
npmDeps = npmDeps.filter((dep) => !exclude.includes(dep));
}
if (!projectPackageJson.devDependencies) {
projectPackageJson.devDependencies = {};
}
if (!projectPackageJson.dependencies) {
projectPackageJson.dependencies = {};
}
npmDeps.forEach((dep) => {
if (!projectPackageJson.dependencies[dep] &&
!projectPackageJson.devDependencies[dep]) {
projectPackageJson.dependencies[dep] = '*';
newDeps.push(dep);
updated = true;
}
});
npmDevdeps.forEach((dep) => {
if (!projectPackageJson.dependencies[dep] &&
!projectPackageJson.devDependencies[dep]) {
projectPackageJson.devDependencies[dep] = '*';
newDeps.push(dep);
updated = true;
}
});
if (updated) {
(0, devkit_1.writeJsonFile)(projectPackageJsonPath, projectPackageJson);
}
return newDeps;
}
function displayNewlyAddedDepsMessage(projectName, deps) {
if (deps.length > 0) {
devkit_1.logger.info(`${pc.bold(pc.cyan('info'))} Added entries to 'package.json' for '${projectName}' (for autolink):
${deps.map((d) => pc.bold(pc.cyan(`"${d}": "*"`))).join('\n ')}`);
}
else {
devkit_1.logger.info(`${pc.bold(pc.cyan('info'))} Dependencies for '${projectName}' are up to date! No changes made.`);
}
}
;