UNPKG

@routineless/nx-aws-cdk

Version:
113 lines 4.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cdkApplicationGenerator = void 0; const tslib_1 = require("tslib"); const devkit_1 = require("@nx/devkit"); const eslint_1 = require("@nx/eslint"); const node_1 = require("@nx/node"); const path_1 = require("path"); const generators_1 = require("../../utils/generators"); const routineless_1 = require("../../utils/routineless"); const versions_1 = require("../../utils/versions"); const workspace_1 = require("../../utils/workspace"); const eslint_cdk_rules_json_1 = tslib_1.__importDefault(require("./eslint-cdk-rules.json")); const addFiles = (tree, options, filesType = 'files') => { const scope = (0, workspace_1.getNpmScope)(tree); const templateOptions = { ...options, ...(0, devkit_1.names)(options.name), offsetFromRoot: (0, devkit_1.offsetFromRoot)(options.projectRoot), workspaceName: scope || 'aws-cdk-app', template: '', }; (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, 'generatorFiles', filesType), options.projectRoot, templateOptions); }; const updateLintConfig = (tree, options) => { (0, devkit_1.updateJson)(tree, `${options.projectRoot}/.eslintrc.json`, (json) => { json.plugins = json?.plugins || []; const plugins = json.plugins; const hasCdkPlugin = plugins.findIndex((row) => row === 'cdk') >= 0; if (!hasCdkPlugin) { plugins.push('cdk'); } return json; }); (0, devkit_1.updateJson)(tree, `.eslintrc.json`, (config) => { config.plugins = config?.plugins || []; const plugins = config.plugins; const hasCdkPlugin = plugins.findIndex((row) => row === 'cdk') >= 0; if (!hasCdkPlugin) { plugins.push('cdk'); if (config.overrides && config.overrides[0]) { const baseConfigOverride = config.overrides[0]; baseConfigOverride.rules = { ...baseConfigOverride.rules, ...eslint_cdk_rules_json_1.default, }; } } return config; }); }; const updateInfraProjectConfiguration = (tree, options) => { const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.name); const projectTargets = projectConfig.targets ?? {}; delete projectTargets['serve']; delete projectTargets['build']; (0, devkit_1.updateProjectConfiguration)(tree, options.projectName, projectConfig); }; const updateGitIgnore = (tree) => { (0, workspace_1.addGitIgnoreEntries)(tree, ['# CDK Context & Staging files', 'cdk.context.json', 'cdk.out/']); }; const updateTsConfig = (tree) => { (0, devkit_1.updateJson)(tree, `tsconfig.base.json`, (tsConfig) => { const existingExclusions = tsConfig.exclude || []; tsConfig.exclude = [...existingExclusions, 'cdk.out']; return tsConfig; }); }; const addDependencies = (host, options) => { const devDependencies = {}; if (options.linter === eslint_1.Linter.EsLint) { devDependencies['eslint-plugin-cdk'] = versions_1.CDK_ESLINT_VERSION; } devDependencies['aws-cdk-lib'] = versions_1.AWS_CDK_LIB_VERSION; return (0, devkit_1.addDependenciesToPackageJson)(host, {}, devDependencies); }; const cdkApplicationGenerator = async (tree, options) => { const normalizedOptions = (0, generators_1.injectProjectProperties)(tree, options); const tasks = []; if (normalizedOptions.setAsRoutinelessInfraApp) { (0, routineless_1.updateRoutinelessConfig)(tree, (config) => { config.infraApp = normalizedOptions.name; return config; }); } tasks.push(addDependencies(tree, normalizedOptions)); tasks.push(await (0, node_1.applicationGenerator)(tree, { ...normalizedOptions, directory: normalizedOptions.projectRoot, projectNameAndRootFormat: 'as-provided', e2eTestRunner: 'none', skipFormat: true, addPlugin: true, })); updateTsConfig(tree); addFiles(tree, normalizedOptions); if (normalizedOptions.unitTestRunner === 'jest') { addFiles(tree, normalizedOptions, 'jest-files'); } if (normalizedOptions.linter === eslint_1.Linter.EsLint) { updateLintConfig(tree, normalizedOptions); } (0, workspace_1.deleteNodeAppRedundantDirs)(tree, normalizedOptions.projectRoot); updateGitIgnore(tree); updateInfraProjectConfiguration(tree, normalizedOptions); if (!options.skipFormat) { await (0, devkit_1.formatFiles)(tree); } return (0, devkit_1.runTasksInSerial)(...tasks); }; exports.cdkApplicationGenerator = cdkApplicationGenerator; exports.default = exports.cdkApplicationGenerator; //# sourceMappingURL=index.js.map