UNPKG

@nx/node

Version:

The Node Plugin for Nx contains generators to manage Node applications within an Nx workspace.

50 lines (49 loc) 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateProjectConfig = updateProjectConfig; exports.setupDockerGenerator = setupDockerGenerator; const devkit_1 = require("@nx/devkit"); const path_1 = require("path"); function normalizeOptions(tree, setupOptions) { return { ...setupOptions, project: setupOptions.project ?? (0, devkit_1.readNxJson)(tree).defaultProject, targetName: setupOptions.targetName ?? 'docker-build', buildTarget: setupOptions.buildTarget ?? 'build', }; } function addDocker(tree, options) { const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project); const outputPath = projectConfig.targets[options.buildTarget]?.options['outputPath']; if (!projectConfig) { throw new Error(`Cannot find project configuration for ${options.project}`); } if (!outputPath && !options.outputPath) { throw new Error(`The output path for the project ${options.project} is not defined. Please provide it as an option to the generator.`); } (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, './files'), projectConfig.root, { tmpl: '', buildLocation: options.outputPath ?? outputPath, project: options.project, }); } function updateProjectConfig(tree, options) { let projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project); projectConfig.targets[`${options.targetName}`] = { dependsOn: [`${options.buildTarget}`], command: `docker build -f ${(0, devkit_1.joinPathFragments)(projectConfig.root, 'Dockerfile')} . -t ${options.project}`, }; (0, devkit_1.updateProjectConfiguration)(tree, options.project, projectConfig); } async function setupDockerGenerator(tree, setupOptions) { const tasks = []; const options = normalizeOptions(tree, setupOptions); // Should check if the node project exists addDocker(tree, options); updateProjectConfig(tree, options); if (!options.skipFormat) { await (0, devkit_1.formatFiles)(tree); } return (0, devkit_1.runTasksInSerial)(...tasks); } exports.default = setupDockerGenerator;