Skip to content

Conversation

TrevorBurnham
Copy link

This is a second attempt at fixing #417. The first attempt was #425,
which moved aws-sdk from dependencies to devDependencies. That
change was reverted by #535.

The aws-sdk dependency is only being used for TypeScript types.
Including it in dependencies rather than devDependencies ensures
that those types are available to package consumers, at the expense of
bringing in a 100MB+ dependency.

The solution here is to replace the aws-sdk dependency with
@types/aws-sdk2-types, which is a relatively lightweight 2.3MB. These
types should be identical, as they were pulled directly from aws-sdk:
DefinitelyTyped/DefinitelyTyped#64111

Further potential optimizations

I considered inlining the types with dts-bundle-generator, which would
allow @types/aws-sdk2-types to be moved to devDependencies, but this
turned out to be impractical with the current export structure, since
the types would have to be inlined separately in each .d.ts file that
uses them. I would recommend that solution if the package moves to
having a single defined entrypoint in the future (perhaps in the next
major version).

License

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

This is a second attempt at fixing aws#417. The first attempt was aws#425,
which moved `aws-sdk` from `dependencies` to `devDependencies`. That
change was reverted by aws#535.

The `aws-sdk` dependency is only being used for TypeScript types.
Including it in `dependencies` rather than `devDependencies` ensures
that those types are available to package consumers, at the expense of
bringing in a 100MB+ dependency.

The solution here is to replace the `aws-sdk` dependency with
`@types/aws-sdk2-types`, which is a relatively lightweight 2.3MB. These
types should be identical, as they were pulled directly from `aws-sdk`:
DefinitelyTyped/DefinitelyTyped#64111

I considered inlining the types with dts-bundle-generator, which would
allow `@types/aws-sdk2-types` to be moved to `devDependencies`, but this
turned out to be impractical with the current export structure, since
the types would have to be inlined separately in each `.d.ts` file that
uses them. I would recommend that solution if the package moves to
having a single defined entrypoint in the future (perhaps in the next
major version).
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.

1 participant