UNPKG

create-nx-workspace

Version:

Smart Repos · Fast Builds

46 lines (45 loc) 1.81 kB
"use strict"; 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; }