title: Trouble migrating from graphql-import to just graphql-tools with ApolloServer, directives cease to work
body: <p>My plight began as a simple desire to expand my graphql schema from a single .graphql file to multiple files so i can better organize the schema and so it wouldn;t grow to one huge file out of control. </p>
  
  <p>My original layout was very straight forward and i had a working schema in a <code>schema.graphql</code> file. I would be able to parse it into a string using <code>importSchema('server/schema.graphql')</code> from the graphql-import library, which is now deprecated <a href="https://github.com/ardatan/graphql-import" rel="noreferrer">https://github.com/ardatan/graphql-import</a></p>
  
  <p>They mention that it has been merged into <code>graphql-tools</code> in the newest version and provide a migration tutorial here <a href="https://www.graphql-tools.com/docs/migration-from-import" rel="noreferrer">https://www.graphql-tools.com/docs/migration-from-import</a> The tutorial seems very straight forward since their first example pretty much illustrate exactly what my code looks like (except i dont use es6 import but old fashoined require):</p>
  
  <pre><code>import { importSchema } from 'graphql-import';
  import { makeExecutableSchema } from 'graphql-tools';
  
  const typeDefs = importSchema(join(__dirname, 'schema.graphql'));
  const resolvers = {
    Query: {...}
  };
  const schema = makeExecutableSchema({ typeDefs, resolvers });
  </code></pre>
  
  <p>And then they say to modify it, simply make these changes</p>
  
  <pre><code>import { loadSchemaSync } from '@graphql-tools/load';
  import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';
  import { addResolversToSchema } from '@graphql-tools/schema';
  
  const schema = loadSchemaSync(join(__dirname, 'schema.graphql'), { loaders: [new GraphQLFileLoader()] });
  const resolvers = { Query: {...} };
  
  const schemaWithResolvers = addResolversToSchema({
    schema,
    resolvers,
  });
  </code></pre>
  
  <p>I made those changes but the vital difference is that they no longer use <code>makeExecutableSchema()</code> in their example, which is pretty important for me since i need to include the directives. What do i do now with the schema? How do i declare the directives? their documentation for directives still uses <code>makeExecutableSchema</code> but i cant use it anymore since the new <code>loadSchemaSync</code> function returns an object instead of a string literal which i would need to pass to <code>typeDefs</code> in <code>makeExecutableSchema</code></p>
  
  <p>I am using apollo-server, so it seemed a possible workaround was to just declare the directives in the apollo-server constructor and just pass in this new <code>schemaWithResolvers</code> as a schema as such</p>
  
  <pre><code>const server = new ApolloServer({
      schema, //this includes now the returned value of using addResolversToSchema()
      schemaDirectives : {
          auth:AuthDirective,
          authRole: AuthRoleDirective
      }
      context : ({req}) =&gt; //dostuff,
  
  });
  </code></pre>
  
  <p>This allows my server to run, and i can perform queries and mutations, however, my directives are no longer working, and i no longer have authentication on protected queries. </p>
  
  <p>I would like a way to import my .graphql file and parse it into a string so i can use it inside <code>typeDefs</code> as i used to with importSchema() or a way to declase my directies without using makeExecutableSchema() so that they continue working again!</p>
  
  <p>I have gone up and down the documentation and seen other libraries and so far i keep coming up short, any tips or guidance is greatly appreciated</p>