UNPKG

@nxext/stencil

Version:

Nx plugin for stenciljs

77 lines 3.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateBuildableProjectPackageJsonDependencies = updateBuildableProjectPackageJsonDependencies; const devkit_1 = require("@nx/devkit"); const path_1 = require("path"); function isNpmProject(node) { return node.type === 'npm'; } function hasDependency(packageJson, depConfigName, packageName) { var _a; return !!((_a = packageJson[depConfigName]) === null || _a === void 0 ? void 0 : _a[packageName]); } /** * Reimplements the `@nx/js` `updateBuildableProjectPackageJsonDependencies` * helper, removed without replacement in Nx 23 (nrwl/nx#35xxx). Writes the * resolved version of each buildable workspace/npm dependency into the * built package.json, mirroring the upstream behavior from Nx 22. */ function updateBuildableProjectPackageJsonDependencies(root, projectName, targetName, configurationName, node, dependencies, typeOfDependency = 'dependencies') { const outputs = (0, devkit_1.getOutputsForTargetAndConfiguration)({ project: projectName, target: targetName, configuration: configurationName, }, {}, node); const packageJsonPath = `${outputs[0]}/package.json`; let packageJson; let workspacePackageJson; try { packageJson = (0, devkit_1.readJsonFile)(packageJsonPath); workspacePackageJson = (0, devkit_1.readJsonFile)(`${root}/package.json`); } catch (_a) { return; } packageJson.dependencies = packageJson.dependencies || {}; packageJson.peerDependencies = packageJson.peerDependencies || {}; let updatePackageJson = false; dependencies.forEach((entry) => { var _a; const packageName = isNpmProject(entry.node) ? entry.node.data.packageName : entry.name; if (hasDependency(packageJson, 'dependencies', packageName) || hasDependency(packageJson, 'devDependencies', packageName) || hasDependency(packageJson, 'peerDependencies', packageName)) { return; } try { if (!isNpmProject(entry.node) && entry.node.type === 'lib') { const depOutputs = (0, devkit_1.getOutputsForTargetAndConfiguration)({ project: projectName, target: targetName, configuration: configurationName, }, {}, entry.node); const depPackageJsonPath = (0, path_1.join)(root, depOutputs[0], 'package.json'); const depVersion = (0, devkit_1.readJsonFile)(depPackageJsonPath).version; packageJson[typeOfDependency][packageName] = depVersion; updatePackageJson = true; } else if (isNpmProject(entry.node)) { if ((_a = workspacePackageJson.devDependencies) === null || _a === void 0 ? void 0 : _a[entry.node.data.packageName]) { return; } packageJson[typeOfDependency][entry.node.data.packageName] = entry.node.data.version; updatePackageJson = true; } } catch (_b) { // skip if cannot find package.json } }); if (updatePackageJson) { (0, devkit_1.writeJsonFile)(packageJsonPath, packageJson); } } //# sourceMappingURL=update-buildable-package-json-dependencies.js.map