UNPKG

@nx/angular

Version:

The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It provides: - Integration with libraries such as Storybook, Jest, ESLint, Tailwind CSS, Playwright and Cypre

72 lines (71 loc) 3.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeOptions = normalizeOptions; const devkit_1 = require("@nx/devkit"); const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils"); const test_runners_1 = require("../../../utils/test-runners"); const version_utils_1 = require("../../utils/version-utils"); function arePluginsExplicitlyDisabled(host) { const { useInferencePlugins } = (0, devkit_1.readNxJson)(host); const addPluginEnvVar = process.env.NX_ADD_PLUGINS; return useInferencePlugins === false || addPluginEnvVar === 'false'; } function validateBundler(bundler) { if (['esbuild', 'webpack', 'rspack'].includes(bundler)) { return bundler; } throw new Error(`Invalid bundler: ${bundler}. Please use one of the following: 'esbuild', 'webpack', 'rspack'.`); } async function normalizeOptions(host, options, isRspack) { await (0, project_name_and_root_utils_1.ensureRootProjectName)(options, 'application'); const { projectName: appProjectName, projectRoot: appProjectRoot } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, { name: options.name, projectType: 'application', directory: options.directory, rootProject: options.rootProject, }); options.rootProject = appProjectRoot === '.'; const e2eProjectName = options.rootProject ? 'e2e' : `${appProjectName}-e2e`; const e2eProjectRoot = options.rootProject ? 'e2e' : `${appProjectRoot}-e2e`; const parsedTags = options.tags ? options.tags.split(',').map((s) => s.trim()) : []; const bundler = validateBundler(options.bundler ?? 'esbuild'); const addPlugin = options.addPlugin ?? (!arePluginsExplicitlyDisabled(host) && isRspack); const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(host); const zonelessDefaultValue = angularMajorVersion >= 21 ? true : false; const unitTestRunner = options.unitTestRunner ?? (angularMajorVersion >= 21 && bundler === 'esbuild' ? test_runners_1.UnitTestRunner.VitestAngular : angularMajorVersion >= 21 ? test_runners_1.UnitTestRunner.VitestAnalog : test_runners_1.UnitTestRunner.Jest); // Set defaults and then overwrite with user options return { addPlugin, style: 'css', routing: true, inlineStyle: false, inlineTemplate: false, skipTests: unitTestRunner === test_runners_1.UnitTestRunner.None, skipFormat: false, e2eTestRunner: test_runners_1.E2eTestRunner.Playwright, linter: 'eslint', strict: true, standalone: true, directory: appProjectRoot, ...options, prefix: options.prefix || 'app', name: appProjectName, appProjectRoot, appProjectSourceRoot: `${appProjectRoot}/src`, e2eProjectRoot, e2eProjectName, parsedTags, bundler, outputPath: (0, devkit_1.joinPathFragments)('dist', !options.rootProject ? appProjectRoot : appProjectName), ssr: options.ssr ?? false, unitTestRunner, zoneless: options.zoneless ?? zonelessDefaultValue, }; }