@nrwl/workspace
Version:
73 lines • 3.34 kB
JavaScript
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
;