@routineless/nx-aws-cdk
Version:
Nx plugin for AWS CDK
113 lines • 4.8 kB
JavaScript
;
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