UNPKG

create-nx-workspace

Version:

Smart Repos · Fast Builds

55 lines (54 loc) 1.98 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 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; }