create-nx-workspace
Version:
55 lines (54 loc) • 1.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSandbox = createSandbox;
const fs_1 = require("fs");
const tmp_1 = require("tmp");
const ora = require("ora");
const path_1 = require("path");
const package_manager_1 = require("./utils/package-manager");
const child_process_utils_1 = require("./utils/child-process-utils");
const output_1 = require("./utils/output");
const nx_version_1 = require("./utils/nx/nx-version");
const error_utils_1 = require("./utils/error-utils");
/**
* Creates a temporary directory and installs Nx in it.
* @param packageManager package manager to use
* @returns directory where Nx is installed
*/
async function createSandbox(packageManager) {
const installSpinner = ora(`Installing dependencies with ${packageManager}`).start();
const { install, preInstall } = (0, package_manager_1.getPackageManagerCommand)(packageManager);
const tmpDir = (0, tmp_1.dirSync)().name;
try {
(0, fs_1.writeFileSync)((0, path_1.join)(tmpDir, 'package.json'), JSON.stringify({
dependencies: {
nx: nx_version_1.nxVersion,
'@nx/workspace': nx_version_1.nxVersion,
},
license: 'MIT',
}));
(0, package_manager_1.generatePackageManagerFiles)(tmpDir, packageManager);
if (preInstall) {
await (0, child_process_utils_1.execAndWait)(preInstall, tmpDir);
}
await (0, child_process_utils_1.execAndWait)(install, tmpDir);
installSpinner.succeed();
}
catch (e) {
installSpinner.fail();
if (e instanceof Error) {
output_1.output.error({
title: `Failed to install dependencies`,
bodyLines: (0, error_utils_1.mapErrorToBodyLines)(e),
});
}
else {
console.error(e);
}
process.exit(1);
}
finally {
installSpinner.stop();
}
return tmpDir;
}