Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Add NPM duplicate dependency check to canaries #11333

Merged
merged 3 commits into from
May 4, 2023

Conversation

jimblanc
Copy link
Contributor

@jimblanc jimblanc commented May 3, 2023

Description of changes

This change adds a script for detecting duplicate Amplify dependencies in NPM and integrates it with our web canaries in CircleCI. Duplicate detection with Yarn will still be handled via our build-time check.

Script sourced from trouble-shooting guide: https://docs.amplify.aws/lib/troubleshooting/upgrading/q/platform/js/#check-for-duplicate-versions

Issue #, if available

Description of how you validated changes

Checklist

  • PR description included
  • yarn test passes
  • Tests are changed or added
  • Relevant documentation is changed or added (and PR referenced)

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@jimblanc jimblanc marked this pull request as ready for review May 3, 2023 17:16
@jimblanc jimblanc requested review from a team as code owners May 3, 2023 17:16
Copy link
Member

@stocaaro stocaaro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The duplication seems like a bit more than a nit, but understanding there's probably a reason, I am going to give this an approval.

command: |
npm i -S aws-amplify
npm i -g wait-on serve
~/amplify-js/.circleci/duplicates-npm.sh
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems odd to see this directly in the circle folder. That said, there is prior art and wouldn't recommend we move things around in this change.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is required for CircleCI to be able to access the script (we do this with some other shell scripts in the .circleci folder, e.g. retry-yarn-script.sh). The duplication is largely for this reason as well. We could move our build-time script into the .circleci folder and adapt it to try to be "smarter" and take a parameter to selectively use NPM or Yarn, but this felt like overkill to me. And our build time script using something in the .circleci folder would also be just as strange as the reverse.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we move the logic into a script, capture the execution in a scripts entry in package.json and then call it in both places to isolate the shared code?

#!/usr/bin/env bash

# This script detects duplicated Amplify dependencies in the dependency graph (with NPM)
duplicatedDependencies=$(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we copying this from the scripts location? Code duplication within the package seems like a smell.

@jimblanc jimblanc merged commit 50cb189 into aws-amplify:main May 4, 2023
@jimblanc jimblanc deleted the chore/npm-duplicate-detection branch May 4, 2023 21:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants