From 9e7f782cd6a625277969b88d39f3c33a5b959382 Mon Sep 17 00:00:00 2001 From: ashu96 Date: Tue, 19 Oct 2021 15:54:54 +0530 Subject: [PATCH] fix(cli): Update workspaces in root package.json --- .../commands/upgrade/upgrades/5.16.0/index.js | 18 +++++++- .../cli/commands/upgrade/upgrades/utils.js | 41 ++++++++++++++++++- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/packages/cli/commands/upgrade/upgrades/5.16.0/index.js b/packages/cli/commands/upgrade/upgrades/5.16.0/index.js index 2af042ac860..40adf902866 100644 --- a/packages/cli/commands/upgrade/upgrades/5.16.0/index.js +++ b/packages/cli/commands/upgrade/upgrades/5.16.0/index.js @@ -2,7 +2,12 @@ * A new type of upgrade where we take the files from cwp-template-aws and copy them into required locations. * Old files are always backed up. */ -const { prettierFormat, yarnInstall } = require("../utils"); +const { + prettierFormat, + yarnInstall, + addWorkspaceToRootPackageJson, + removeWorkspaceToRootPackageJson +} = require("../utils"); const path = require("path"); const fs = require("fs"); const fsExtra = require("fs-extra"); @@ -284,6 +289,17 @@ module.exports = { */ assignPackageVersions(context, targets); + /** + * Update workspaces in root package.json. + */ + context.info(" Update workspaces in root package.json..."); + const rootPackageJson = path.join(context.project.root, "package.json"); + await addWorkspaceToRootPackageJson(rootPackageJson, [ + "api/code/pageBuilder/importPages/*", + "api/code/pageBuilder/exportPages/*" + ]); + await removeWorkspaceToRootPackageJson(rootPackageJson, ["api/code/pageBuilder/*"]); + await prettierFormat( targets.map(t => t.destination), context diff --git a/packages/cli/commands/upgrade/upgrades/utils.js b/packages/cli/commands/upgrade/upgrades/utils.js index d843ae5ea91..57e2bd6e2ec 100644 --- a/packages/cli/commands/upgrade/upgrades/utils.js +++ b/packages/cli/commands/upgrade/upgrades/utils.js @@ -311,6 +311,43 @@ const addImportsToSource = ({ context, source, imports, file }) => { } }; +/** + * @param packageJsonPath {String} + * @param pathsToAdd {String[]} + */ +const addWorkspaceToRootPackageJson = async (packageJsonPath, pathsToAdd) => { + const rootPackageJson = await loadJson(packageJsonPath); + + pathsToAdd.forEach(pathToAdd => { + // Ensure forward slashes are used. + pathToAdd = pathToAdd.replace(/\\/g, "/"); + // Add it to workspaces packages if not already + if (!rootPackageJson.workspaces.packages.includes(pathToAdd)) { + rootPackageJson.workspaces.packages.push(pathToAdd); + } + }); + + await writeJson(packageJsonPath, rootPackageJson); +}; + +/** + * @param packageJsonPath {String} + * @param pathsToRemove {String[]} + */ +const removeWorkspaceToRootPackageJson = async (packageJsonPath, pathsToRemove) => { + const rootPackageJson = await loadJson(packageJsonPath); + + pathsToRemove.forEach(pathToRemove => { + // Remove it from workspaces packages if present + const index = rootPackageJson.workspaces.packages.indexOf(pathToRemove); + if (index !== -1) { + rootPackageJson.workspaces.packages.splice(index, 1); + } + }); + + await writeJson(packageJsonPath, rootPackageJson); +}; + module.exports = { insertImport, addPackagesToDependencies, @@ -319,5 +356,7 @@ module.exports = { createMorphProject, prettierFormat, yarnInstall, - addImportsToSource + addImportsToSource, + addWorkspaceToRootPackageJson, + removeWorkspaceToRootPackageJson };