UNPKG

@nx/node

Version:

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

45 lines (44 loc) 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addProxy = addProxy; const devkit_1 = require("@nx/devkit"); function addProxy(tree, options) { const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.frontendProject); if (projectConfig.targets && ['serve', 'dev'].find((t) => !!projectConfig.targets[t])) { const targetName = ['serve', 'dev'].find((t) => !!projectConfig.targets[t]); projectConfig.targets[targetName].dependsOn = [ ...(projectConfig.targets[targetName].dependsOn ?? []), `${options.name}:serve`, ]; const pathToProxyFile = `${projectConfig.root}/proxy.conf.json`; projectConfig.targets[targetName].options = { ...projectConfig.targets[targetName].options, proxyConfig: pathToProxyFile, }; if (!tree.exists(pathToProxyFile)) { tree.write(pathToProxyFile, JSON.stringify({ '/api': { target: `http://localhost:${options.port}`, secure: false, }, }, null, 2)); } else { //add new entry to existing config const proxyFileContent = tree.read(pathToProxyFile).toString(); const proxyModified = { ...JSON.parse(proxyFileContent), [`/${options.name}-api`]: { target: `http://localhost:${options.port}`, secure: false, }, }; tree.write(pathToProxyFile, JSON.stringify(proxyModified, null, 2)); } (0, devkit_1.updateProjectConfiguration)(tree, options.frontendProject, projectConfig); } else { devkit_1.logger.warn(`Skip updating proxy for frontend project "${options.frontendProject}" since "serve" target is not found in project.json. For more information, see: https://nx.dev/recipes/node/application-proxies.`); } }