@nxext/stencil
Version:
Nx plugin for stenciljs
77 lines • 3.4 kB
JavaScript
;
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