From 573671d6b98864c6a03af9f2e49e40311594b853 Mon Sep 17 00:00:00 2001 From: Jim Blanchard Date: Wed, 3 May 2023 11:42:37 -0500 Subject: [PATCH] chore: Add NPM duplicate dependency check & integrate with canaries. --- .circleci/config.yml | 5 ++++- .circleci/duplicates-npm.sh | 17 +++++++++++++++++ package.json | 2 +- scripts/{duplicates.sh => duplicates-yarn.sh} | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 .circleci/duplicates-npm.sh rename scripts/{duplicates.sh => duplicates-yarn.sh} (94%) diff --git a/.circleci/config.yml b/.circleci/config.yml index d9e302b20cc..59ddc4c85da 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2512,7 +2512,10 @@ orbs: no_output_timeout: 2m - run-with-retry: label: Install AmplifyJS - command: npm i -S aws-amplify && npm i -g wait-on serve + command: | + npm i -S aws-amplify + npm i -g wait-on serve + ~/amplify-js/.circleci/duplicates-npm.sh - run: name: Call Amplify library in code command: | diff --git a/.circleci/duplicates-npm.sh b/.circleci/duplicates-npm.sh new file mode 100644 index 00000000000..fb54ab6f690 --- /dev/null +++ b/.circleci/duplicates-npm.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# This script detects duplicated Amplify dependencies in the dependency graph (with NPM) +duplicatedDependencies=$( + npm ls -all 2>/dev/null | \ + grep -o -e '@\?aws-amplify[^ ]*' | \ + sort | uniq | \ + sed -E 's/^(@?[^@]+).*$/\1/g' | \ + uniq -d | sort +) + +if [ ! "$duplicatedDependencies" ]; then + echo "No duplicated Amplify dependencies detected." +else + echo "Duplicated Amplify dependencies detected: $duplicatedDependencies" + false +fi diff --git a/package.json b/package.json index 618d40d2f5a..e0da6a6ad74 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "bootstrap": "lerna bootstrap", "test": "lerna run test --stream", "test:size": "lerna run test:size", - "test:duplicates": "./scripts/duplicates.sh", + "test:duplicates": "./scripts/duplicates-yarn.sh", "cypress": "lerna run cypress", "cypress:open": "lerna run cypress:open", "coverage": "codecov || exit 0", diff --git a/scripts/duplicates.sh b/scripts/duplicates-yarn.sh similarity index 94% rename from scripts/duplicates.sh rename to scripts/duplicates-yarn.sh index fe165f34b70..d871327b2a6 100755 --- a/scripts/duplicates.sh +++ b/scripts/duplicates-yarn.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# This script detects duplicated Amplify dependencies in the dependency graph +# This script detects duplicated Amplify dependencies in the dependency graph (with Yarn) duplicatedDependencies=$( yarn list --pattern amplify | grep -o -e '@\?aws-amplify[^ ]*' |