@nx/angular
Version:
81 lines (80 loc) • 3.35 kB
JavaScript
;
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 artifact_types_1 = require("../../utils/artifact-types");
async function normalizeOptions(host, schema) {
schema.standalone = schema.standalone ?? true;
// Create a schema with populated default values
const options = {
buildable: false,
linter: 'eslint',
publishable: false,
simpleName: false,
skipFormat: false,
unitTestRunner: test_runners_1.UnitTestRunner.Jest,
// Publishable libs cannot use `full` yet, so if its false then use the passed value or default to `full`
compilationMode: schema.publishable
? 'partial'
: schema.compilationMode ?? 'full',
skipModule: schema.skipModule || schema.standalone,
...schema,
};
await (0, project_name_and_root_utils_1.ensureRootProjectName)(options, 'library');
const { projectName, names: projectNames, projectRoot, importPath, } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, {
name: options.name,
projectType: 'library',
directory: options.directory,
importPath: options.importPath,
});
const fileName = options.simpleName
? projectNames.projectSimpleName
: projectNames.projectFileName;
const moduleName = `${(0, devkit_1.names)(fileName).className}Module`;
const parsedTags = options.tags
? options.tags.split(',').map((s) => s.trim())
: [];
const moduleTypeSeparator = (0, artifact_types_1.getModuleTypeSeparator)(host);
const modulePath = `${projectRoot}/src/lib/${fileName}${moduleTypeSeparator}module.ts`;
const ngCliSchematicLibRoot = projectName;
const allNormalizedOptions = {
...options,
linter: options.linter ?? 'eslint',
unitTestRunner: options.unitTestRunner ?? test_runners_1.UnitTestRunner.Jest,
prefix: options.prefix ?? 'lib',
name: projectName,
projectRoot,
entryFile: 'index',
moduleName,
modulePath,
parsedTags,
fileName,
importPath,
ngCliSchematicLibRoot,
skipTests: options.unitTestRunner === 'none' ? true : options.skipTests,
standaloneComponentName: `${(0, devkit_1.names)(projectNames.projectSimpleName).className}Component`,
moduleTypeSeparator,
};
const { displayBlock, inlineStyle, inlineTemplate, viewEncapsulation, changeDetection, style, skipTests, selector, skipSelector, flat, ...libraryOptions } = allNormalizedOptions;
const componentType = (0, artifact_types_1.getComponentType)(host);
return {
libraryOptions,
componentOptions: {
name: fileName,
standalone: libraryOptions.standalone,
displayBlock,
inlineStyle,
inlineTemplate,
viewEncapsulation,
changeDetection,
style,
skipTests,
selector,
skipSelector,
flat,
type: componentType,
},
};
}