@nx/expo
Version:
55 lines (54 loc) • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = installExecutor;
exports.installAndUpdatePackageJson = installAndUpdatePackageJson;
const devkit_1 = require("@nx/devkit");
const fileutils_1 = require("nx/src/utils/fileutils");
const path_1 = require("path");
const sync_deps_impl_1 = require("../sync-deps/sync-deps.impl");
let childProcess;
async function* installExecutor(options, context) {
try {
await installAndUpdatePackageJson(context, options);
yield {
success: true,
};
}
finally {
if (childProcess) {
childProcess.kill();
}
}
}
async function installAndUpdatePackageJson(context, options) {
const { installAsync } = require('@expo/cli/build/src/install/installAsync');
const packages = typeof options.packages === 'string'
? options.packages.split(',')
: options.packages ?? [];
await installAsync(packages, {
fix: options.fix,
check: options.check,
}, createInstallOptions({ force: options.force }));
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, fileutils_1.readJsonFile)(workspacePackageJsonPath);
const projectPackageJson = (0, fileutils_1.readJsonFile)(projectPackageJsonPath);
(0, sync_deps_impl_1.displayNewlyAddedDepsMessage)(context.projectName, await (0, sync_deps_impl_1.syncDeps)(context.projectName, projectPackageJson, projectPackageJsonPath, workspacePackageJson, context.projectGraph, packages));
}
// options from https://github.com/expo/expo/blob/main/packages/%40expo/cli/src/install/index.ts
function createInstallOptions(options) {
return Object.keys(options).reduce((acc, k) => {
const v = options[k];
if (typeof v === 'boolean') {
if (v === true) {
// when true, does not need to pass the value true, just need to pass the flag in kebob case
acc.push(`--${(0, devkit_1.names)(k).fileName}`);
}
}
else if (v !== undefined) {
acc.push(`--${(0, devkit_1.names)(k).fileName}`, v);
}
return acc;
}, []);
}