apollo-server-express: Add direct dependency on express
.
#3239
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The literal
import
-ing ofexpress
inApolloServer.ts
isn't new but, prior to #3047, it had only been a typing dependency — not an actual runtime dependency — since the TypeScript compiler doesn't emitrequire
s when only types are utilized.To see this first hand, see the emitted
dist/ApolloServer.js
in[email protected]
compared to the same file in[email protected]
. (Hard to decipher, but check around like 15 and search for"express"
in the second link.)Now that we actually utilize
express.Router
to build the composition of middleware in #3047 , it's true thatexpress
is no longer just a type dependency, but does warrant being a regular dependency as well!Since this has never been the case before during the entirety of the v2 line, I'm a bit concerned about introducing it now, but it seems other integrations like
apollo-server-koa
already have similar requirements going back to its introduction in #1282apollo-server/packages/apollo-server-koa/package.json
Line 41 in 92ea402
Furthermore, we already have similar direct dependencies on other packages which we use directly, like
cors
andbody-parser
:https://github.com/apollographql/apollo-server/blob/ff3af66a0f3c63bfb056feca82fc7e7b7592b4a5/packages/apollo-server-express/package.json
If this turns out to be problematic, we could consider declaring it only in
peerDependencies
, but those come with their own share of confusion.Fixes: #3238