UNPKG

@nrwl/workspace

Version:

The Workspace plugin contains executors and generators that are useful for any Nx workspace. It should be present in every Nx workspace and other plugins build on it.

73 lines 3.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.newGenerator = void 0; const tslib_1 = require("tslib"); const devkit_1 = require("@nrwl/devkit"); const path_1 = require("path"); const presets_1 = require("../utils/presets"); const generate_workspace_files_1 = require("./generate-workspace-files"); const generate_preset_1 = require("./generate-preset"); function newGenerator(host, options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { options = normalizeOptions(options); validateOptions(options, host); yield (0, generate_workspace_files_1.generateWorkspaceFiles)(host, Object.assign(Object.assign({}, options), { nxCloud: undefined })); (0, generate_preset_1.addPresetDependencies)(host, options); const isCustomPreset = !Object.values(presets_1.Preset).includes(options.preset); addCloudDependencies(host, options); yield (0, devkit_1.formatFiles)(host); return () => tslib_1.__awaiter(this, void 0, void 0, function* () { (0, devkit_1.installPackagesTask)(host, false, options.directory, options.packageManager); // TODO: move all of these into create-nx-workspace if (options.preset !== presets_1.Preset.NPM && options.preset !== presets_1.Preset.Core && !isCustomPreset) { yield (0, generate_preset_1.generatePreset)(host, options); } }); }); } exports.newGenerator = newGenerator; exports.default = newGenerator; function validateOptions(options, host) { if (options.skipInstall && options.preset !== presets_1.Preset.Apps && options.preset !== presets_1.Preset.Core && options.preset !== presets_1.Preset.TS && options.preset !== presets_1.Preset.Empty && options.preset !== presets_1.Preset.NPM) { throw new Error(`Cannot select a preset when skipInstall is set to true.`); } if (options.skipInstall && options.nxCloud) { throw new Error(`Cannot select nxCloud when skipInstall is set to true.`); } if (options.preset === presets_1.Preset.NodeServer && !options.framework) { throw new Error(`Cannot generate ${options.preset} without selecting a framework`); } if (host.exists(options.name) && !host.isFile(options.name) && host.children(options.name).length > 0) { throw new Error(`${(0, path_1.join)(host.root, options.name)} is not an empty directory.`); } } function normalizeOptions(options) { options.name = (0, devkit_1.names)(options.name).fileName; if (!options.directory) { options.directory = options.name; } // If the preset already contains a version in the name // -- my-package@2.0.1 // -- @scope/package@version const match = options.preset.match(/^(?<package>(@.+\/)?[^@]+)(@(?<version>\d+\.\d+\.\d+))?$/); if (match) { options.preset = match.groups.package; options.presetVersion = match.groups.version; } return options; } function addCloudDependencies(host, options) { if (options.nxCloud) { return (0, devkit_1.addDependenciesToPackageJson)(host, {}, { '@nrwl/nx-cloud': 'latest' }, (0, path_1.join)(options.directory, 'package.json')); } } //# sourceMappingURL=new.js.map