@nx/node
Version:
50 lines (49 loc) • 2.19 kB
JavaScript
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;
;