@flowaccount/nx-aws-cdk
Version:
aws-cdk executors and generators for nx workspace
107 lines • 4.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.normalizeOptions = exports.updateWorkspaceJson = exports.getBuildConfig = void 0;
const devkit_1 = require("@nx/devkit");
const workspace_1 = require("@nx/workspace");
// import { toFileName } from '@nx/devkit';
const path_1 = require("path");
function getBuildConfig(options) {
return {
executor: '@nx/node:build',
options: {
outputPath: (0, devkit_1.joinPathFragments)((0, path_1.normalize)('dist'), options.appProjectRoot),
package: options.appProjectRoot,
tsConfig: (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'tsconfig.cdk.json'),
fileReplacements: [
{
replace: `${(0, devkit_1.joinPathFragments)((0, path_1.normalize)('dist'), options.appProjectRoot)}/src/environments/environment.ts`,
with: `${(0, devkit_1.joinPathFragments)((0, path_1.normalize)('dist'), options.appProjectRoot)}/src/environments/environment.staging.ts`,
},
],
},
configurations: {
production: {
optimization: true,
extractLicenses: true,
inspect: false,
fileReplacements: [
{
replace: `${(0, devkit_1.joinPathFragments)((0, path_1.normalize)('dist'), options.appProjectRoot)}/src/environments/environment.ts`,
with: `${(0, devkit_1.joinPathFragments)((0, path_1.normalize)('dist'), options.appProjectRoot)}/src/environments/environment.production.ts`,
},
],
},
},
};
}
exports.getBuildConfig = getBuildConfig;
function getCdkConfig(options, executor) {
return {
builder: `@flowaccount/nx-aws-cdk:${executor}`,
options: {
buildTarget: options.name + ':build',
profile: options.profile,
stackName: `staging-${options.name}`,
debug: options.debug,
verbose: options.verbose,
output: `dist/cdkOutput/${options.appProjectRoot}/cdk.out`,
},
configurations: {
staging: {
buildTarget: options.name + `:${executor}:staging`,
},
production: {
buildTarget: options.name + `:${executor}:production`,
},
},
};
}
function getSynthConfig(options) {
return getCdkConfig(options, 'synth');
}
function getDiffConfig(options) {
return getCdkConfig(options, 'diff');
}
function getDeployConfig(options) {
return getCdkConfig(options, 'deploy');
}
function getDestroyConfig(options) {
return getCdkConfig(options, 'destroy');
}
function updateWorkspaceJson(host, options) {
const project = {
root: options.appProjectRoot,
sourceRoot: (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'src'),
projectType: workspace_1.ProjectType.Application,
prefix: options.name,
schematics: {},
targets: {},
tags: {},
};
project.targets.build = getBuildConfig(options);
project.targets.serve = getSynthConfig(options);
project.targets.diff = getDiffConfig(options);
project.targets.deploy = getDeployConfig(options);
project.targets.destroy = getDestroyConfig(options);
project.tags = options.parsedTags;
(0, devkit_1.addProjectConfiguration)(host, options.name, project);
}
exports.updateWorkspaceJson = updateWorkspaceJson;
function normalizeOptions(options) {
const appDirectory = options.directory
? `${(0, devkit_1.names)(options.directory).fileName}/${(0, devkit_1.names)(options.name).fileName}`
: (0, devkit_1.names)(options.name).fileName;
const appProjectName = appDirectory.replace(new RegExp('/', 'g'), '-');
const appProjectRoot = (0, devkit_1.joinPathFragments)((0, path_1.normalize)('apps'), appDirectory);
const parsedTags = options.tags
? options.tags.split(',').map((s) => s.trim())
: [];
return Object.assign(Object.assign({}, options), { name: (0, devkit_1.names)(appProjectName).fileName,
// frontendProject: options.frontendProject
// ? toFileName(options.frontendProject)
// : undefined,
appProjectRoot,
parsedTags });
}
exports.normalizeOptions = normalizeOptions;
//# sourceMappingURL=common-schematics.js.map