@forge/cli
12.22.012.22.0-experimental-04cc2b9
out/module-add/dependencies-merger.js~
out/module-add/dependencies-merger.jsModified+25−12
Index: package/out/module-add/dependencies-merger.js
===================================================================
--- package/out/module-add/dependencies-merger.js
+++ package/out/module-add/dependencies-merger.js
@@ -1,7 +1,11 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.planFrontendPackageJson = exports.runPackageManager = exports.writePackageChange = exports.planPackageJsonChange = exports.readPackageJson = void 0;
+exports.readPackageJson = readPackageJson;
+exports.planPackageJsonChange = planPackageJsonChange;
+exports.writePackageChange = writePackageChange;
+exports.runPackageManager = runPackageManager;
+exports.planFrontendPackageJson = planFrontendPackageJson;
const tslib_1 = require("tslib");
const fs_1 = tslib_1.__importDefault(require("fs"));
const path_1 = tslib_1.__importDefault(require("path"));
const cross_spawn_1 = require("cross-spawn");
@@ -20,9 +24,11 @@
};
function readPackageJson(cwd) {
const packageJsonPath = path_1.default.join(cwd, 'package.json');
if (!fs_1.default.existsSync(packageJsonPath)) {
- throw new Error(cli_shared_1.Text.module.add.errorPackageJsonNotFound(packageJsonPath));
+ const scaffold = {};
+ const raw = `${JSON.stringify(scaffold, null, 2)}\n`;
+ return { path: packageJsonPath, raw, parsed: scaffold };
}
try {
const raw = fs_1.default.readFileSync(packageJsonPath, 'utf8');
const parsed = JSON.parse(raw);
@@ -33,9 +39,8 @@
cause: err
});
}
}
-exports.readPackageJson = readPackageJson;
function classifyDeps(templateDependencies, existing, force) {
const additions = [];
const conflicts = [];
const matches = [];
@@ -85,27 +90,32 @@
}
const patch = (0, diff_1.createTwoFilesPatch)(packageJsonPath, packageJsonPath, before, after, 'before', 'after');
return { packageJsonChange: { filePath: packageJsonPath, before, after, patch }, depChanges };
}
-exports.planPackageJsonChange = planPackageJsonChange;
function writePackageChange(change, createParentDir) {
if (!change)
return false;
if (createParentDir)
fs_1.default.mkdirSync(path_1.default.dirname(change.filePath), { recursive: true });
fs_1.default.writeFileSync(change.filePath, change.after, 'utf8');
return true;
}
-exports.writePackageChange = writePackageChange;
function runPackageManager(cwd, args) {
const packageManager = detectPackageManager(cwd);
- return new Promise((resolve) => {
+ const command = `${packageManager} ${args.join(' ')}`;
+ return new Promise((resolve, reject) => {
const child = (0, cross_spawn_1.spawn)(packageManager, args, { cwd });
- child.on('close', (code) => resolve(code === 0));
- child.on('error', () => resolve(false));
+ child.on('close', (code) => {
+ if (code === 0) {
+ resolve();
+ }
+ else {
+ reject(new Error(`Package manager command failed: "${command}" in ${cwd}.`));
+ }
+ });
+ child.on('error', (error) => reject(error));
});
}
-exports.runPackageManager = runPackageManager;
function detectPackageManager(cwd) {
if (fs_1.default.existsSync(path_1.default.join(cwd, 'yarn.lock')))
return 'yarn';
return 'npm';
@@ -166,10 +176,13 @@
};
}
const after = `${JSON.stringify(mergedPackageJson, null, 2)}\n`;
if (before === after) {
- return { depChanges };
+ return { depChanges, frontendPackageJsonPath };
}
- return { packageJsonChange: { filePath: frontendPackageJsonPath, before, after, patch: '' }, depChanges };
+ return {
+ packageJsonChange: { filePath: frontendPackageJsonPath, before, after, patch: '' },
+ depChanges,
+ frontendPackageJsonPath
+ };
}
-exports.planFrontendPackageJson = planFrontendPackageJson;
//# sourceMappingURL=dependencies-merger.js.map
\ No newline at end of file