create-nx-workspace
Version:
46 lines (45 loc) • 1.81 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 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();
const message = e instanceof Error ? e.message : String(e);
throw new error_utils_1.CnwError('SANDBOX_FAILED', `Failed to install dependencies: ${message}`);
}
finally {
installSpinner.stop();
}
return tmpDir;
}