diff --git a/CHANGELOG.md b/CHANGELOG.md index ec10ee4..de7cdc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## [2.3.0] - 2023-11-16 + +- Updated dependencies validation to check for yo@4.3.1 + ## [2.2.0] - 2023-11-12 - Updated npm packages diff --git a/package-lock.json b/package-lock.json index 1dcb33e..ed8b370 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "viva-connections-toolkit", - "version": "2.2.0", + "version": "2.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "viva-connections-toolkit", - "version": "2.2.0", + "version": "2.3.0", "license": "MIT", "dependencies": { "@pnp/cli-microsoft365": "6.11.0" diff --git a/package.json b/package.json index 39b8054..b595468 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "viva-connections-toolkit", "displayName": "Viva Connections Toolkit", "description": "Viva Connections Toolkit aims to boost your productivity in developing and managing SharePoint Framework solutions helping at every stage of your development flow, from setting up your development workspace to deploying a solution straight to your tenant without the need to leave VS Code and now even create a CI/CD pipeline to introduce automate deployment of your app. This toolkit is provided by the community.", - "version": "2.2.0", + "version": "2.3.0", "publisher": "m365pnp", "preview": false, "homepage": "https://github.com/pnp/vscode-viva", diff --git a/src/services/Dependencies.ts b/src/services/Dependencies.ts index a2cdb88..24043d9 100644 --- a/src/services/Dependencies.ts +++ b/src/services/Dependencies.ts @@ -9,7 +9,7 @@ import { Extension } from './Extension'; const SUPPORTED_VERSIONS = ['16.13', '18.17.1']; -const DEPENDENCIES = ['gulp-cli', 'yo', '@microsoft/generator-sharepoint']; +const DEPENDENCIES = ['gulp-cli', 'yo@4.3.1', '@microsoft/generator-sharepoint']; export class Dependencies { @@ -59,8 +59,11 @@ export class Dependencies { const npmLs: NpmLs = JSON.parse(result.toString()); const missingDependencies = []; for (const dependency of DEPENDENCIES) { - const dependencyResult = npmLs.dependencies[dependency]; - if (!dependencyResult) { + const dependencyDetails = Dependencies.splitDependency(dependency); + const dependencyVersion = dependencyDetails.length > 1 ? dependencyDetails[1] : null; + const dependencyName = dependencyDetails[0]; + const installedDependency = npmLs.dependencies[dependencyName]; + if (!installedDependency || (dependencyVersion && installedDependency.version !== dependencyVersion)) { missingDependencies.push(dependency); } } @@ -140,4 +143,15 @@ export class Dependencies { return false; } } + + /** + * split dependency into name and version + */ + private static splitDependency(dependency: string): string[] { + if (dependency.startsWith('@')) { + return ['@' + dependency.substring(1).split('@')[0], dependency.substring(1).split('@')[1]]; + } + + return dependency.split('@'); + } } \ No newline at end of file