diff --git a/docs/source/migration-two-dot.md b/docs/source/migration-two-dot.md
index 5d580401..fa4d2255 100644
--- a/docs/source/migration-two-dot.md
+++ b/docs/source/migration-two-dot.md
@@ -25,10 +25,11 @@ const typeDefs = gql`
`;
//Some projects use schemas imported from external files
-const typeDefs = gql`${IMPORT_FUNCTION('./schema-file')}`;
+const fs = require('fs');
+const typeDefs = gql`${fs.readFileSync(__dirname.concat('/schema.graphql'), 'utf8')}`;
//gql can also be used as regular function to convert a string to an AST
-const typeDefs = gql(IMPORT_FUNCTION('./schema-file'))
+const typeDefs = gql(fs.readFileSync(__dirname.concat('/schema.graphql'), 'utf8'))
```
Changes to app dependencies
diff --git a/packages/apollo-datasource-rest/src/HTTPCache.ts b/packages/apollo-datasource-rest/src/HTTPCache.ts
index a7bd4700..7a5e5be6 100644
--- a/packages/apollo-datasource-rest/src/HTTPCache.ts
+++ b/packages/apollo-datasource-rest/src/HTTPCache.ts
@@ -1,4 +1,4 @@
-import CachePolicy from 'http-cache-semantics';
+import CachePolicy = require('http-cache-semantics');
import { KeyValueCache, InMemoryLRUCache } from 'apollo-server-caching';
diff --git a/packages/apollo-server-caching/src/InMemoryLRUCache.ts b/packages/apollo-server-caching/src/InMemoryLRUCache.ts
index 32517a7f..57fb5d1c 100644
--- a/packages/apollo-server-caching/src/InMemoryLRUCache.ts
+++ b/packages/apollo-server-caching/src/InMemoryLRUCache.ts
@@ -1,4 +1,4 @@
-import LRU from 'lru-cache';
+import * as LRU from 'lru-cache';
import { KeyValueCache } from './KeyValueCache';
export class InMemoryLRUCache implements KeyValueCache {
diff --git a/packages/apollo-server-core/src/index.ts b/packages/apollo-server-core/src/index.ts
index 95a70933..630c3899 100644
--- a/packages/apollo-server-core/src/index.ts
+++ b/packages/apollo-server-core/src/index.ts
@@ -32,6 +32,6 @@ export * from 'graphql-subscriptions';
import { DocumentNode } from 'graphql';
import gqlTag from 'graphql-tag';
export const gql: (
- template: TemplateStringsArray,
+ template: TemplateStringsArray | string,
...substitutions: any[]
) => DocumentNode = gqlTag;
diff --git a/packages/apollo-server-core/src/runHttpQuery.test.ts b/packages/apollo-server-core/src/runHttpQuery.test.ts
index 826dd587..ca675e5a 100644
--- a/packages/apollo-server-core/src/runHttpQuery.test.ts
+++ b/packages/apollo-server-core/src/runHttpQuery.test.ts
@@ -1,7 +1,7 @@
/* tslint:disable:no-unused-expression */
import { expect } from 'chai';
import 'mocha';
-import MockReq from 'mock-req';
+import * as MockReq from 'mock-req';
import { GraphQLSchema, GraphQLObjectType, GraphQLString } from 'graphql';
diff --git a/packages/apollo-server-core/src/runHttpQuery.ts b/packages/apollo-server-core/src/runHttpQuery.ts
index 7724904a..c7ed2ffc 100644
--- a/packages/apollo-server-core/src/runHttpQuery.ts
+++ b/packages/apollo-server-core/src/runHttpQuery.ts
@@ -1,5 +1,5 @@
import { ExecutionResult } from 'graphql';
-import sha256 from 'hash.js/lib/hash/sha/256';
+import * as sha256 from 'hash.js/lib/hash/sha/256';
import { runQuery, QueryOptions } from './runQuery';
import {
diff --git a/packages/apollo-server-core/src/runQuery.test.ts b/packages/apollo-server-core/src/runQuery.test.ts
index 30149812..656e4856 100644
--- a/packages/apollo-server-core/src/runQuery.test.ts
+++ b/packages/apollo-server-core/src/runQuery.test.ts
@@ -1,7 +1,7 @@
/* tslint:disable:no-unused-expression */
import { expect } from 'chai';
import { stub } from 'sinon';
-import MockReq from 'mock-req';
+import * as MockReq from 'mock-req';
import 'mocha';
import {
diff --git a/packages/apollo-server-core/src/types.ts b/packages/apollo-server-core/src/types.ts
index 42b2c44a..055bbaa4 100644
--- a/packages/apollo-server-core/src/types.ts
+++ b/packages/apollo-server-core/src/types.ts
@@ -1,7 +1,7 @@
import { GraphQLSchema, DocumentNode } from 'graphql';
import { SchemaDirectiveVisitor, IResolvers, IMocks } from 'graphql-tools';
import { ConnectionContext } from 'subscriptions-transport-ws';
-import WebSocket from 'ws';
+import * as WebSocket from 'ws';
import { GraphQLExtension } from 'graphql-extensions';
import { EngineReportingOptions } from 'apollo-engine-reporting';
export { GraphQLExtension } from 'graphql-extensions';
diff --git a/packages/apollo-server-express/src/ApolloServer.test.ts b/packages/apollo-server-express/src/ApolloServer.test.ts
index 18f15ca8..95401029 100644
--- a/packages/apollo-server-express/src/ApolloServer.test.ts
+++ b/packages/apollo-server-express/src/ApolloServer.test.ts
@@ -1,13 +1,13 @@
import { expect } from 'chai';
import 'mocha';
-import express from 'express';
+import * as express from 'express';
-import net from 'net';
-import http from 'http';
+import * as net from 'net';
+import * as http from 'http';
-import request from 'request';
-import FormData from 'form-data';
-import fs from 'fs';
+import * as request from 'request';
+import * as FormData from 'form-data';
+import * as fs from 'fs';
import fetch from 'node-fetch';
import { createApolloFetch } from 'apollo-fetch';
diff --git a/packages/apollo-server-express/src/ApolloServer.ts b/packages/apollo-server-express/src/ApolloServer.ts
index 335d111a..e7caa415 100644
--- a/packages/apollo-server-express/src/ApolloServer.ts
+++ b/packages/apollo-server-express/src/ApolloServer.ts
@@ -1,11 +1,11 @@
-import express from 'express';
-import corsMiddleware from 'cors';
+import * as express from 'express';
+import * as corsMiddleware from 'cors';
import { json, OptionsJson } from 'body-parser';
import playgroundMiddleware from 'graphql-playground-middleware-express';
import { MiddlewareOptions as PlaygroundMiddlewareOptions } from 'graphql-playground-html';
import { ApolloServerBase, formatApolloErrors } from 'apollo-server-core';
-import accepts from 'accepts';
-import typeis from 'type-is';
+import * as accepts from 'accepts';
+import * as typeis from 'type-is';
import { graphqlExpress } from './expressApollo';
diff --git a/packages/apollo-server-express/src/apolloServerHttp.test.ts b/packages/apollo-server-express/src/apolloServerHttp.test.ts
index 420c18ca..5da4869e 100644
--- a/packages/apollo-server-express/src/apolloServerHttp.test.ts
+++ b/packages/apollo-server-express/src/apolloServerHttp.test.ts
@@ -22,9 +22,9 @@ import { graphqlExpress } from './expressApollo';
*/
import { expect } from 'chai';
-import zlib from 'zlib';
-import multer from 'multer';
-import bodyParser from 'body-parser';
+import * as zlib from 'zlib';
+import * as multer from 'multer';
+import * as bodyParser from 'body-parser';
const request = require('supertest');
const express4 = require('express'); // modern
import {
diff --git a/packages/apollo-server-express/src/connectApollo.test.ts b/packages/apollo-server-express/src/connectApollo.test.ts
index 674a003b..c7ba42be 100644
--- a/packages/apollo-server-express/src/connectApollo.test.ts
+++ b/packages/apollo-server-express/src/connectApollo.test.ts
@@ -1,5 +1,5 @@
-import connect from 'connect';
-import query from 'qs-middleware';
+import * as connect from 'connect';
+import * as query from 'qs-middleware';
import { ApolloServer } from './ApolloServer';
import { Config } from 'apollo-server-core';
import 'mocha';
diff --git a/packages/apollo-server-express/src/datasource.test.ts b/packages/apollo-server-express/src/datasource.test.ts
index 401bfb18..8348a705 100644
--- a/packages/apollo-server-express/src/datasource.test.ts
+++ b/packages/apollo-server-express/src/datasource.test.ts
@@ -1,8 +1,8 @@
import { expect } from 'chai';
import 'mocha';
-import express from 'express';
+import * as express from 'express';
-import http from 'http';
+import * as http from 'http';
import { RESTDataSource } from 'apollo-datasource-rest';
diff --git a/packages/apollo-server-express/src/expressApollo.test.ts b/packages/apollo-server-express/src/expressApollo.test.ts
index 158677fc..ed221b5d 100644
--- a/packages/apollo-server-express/src/expressApollo.test.ts
+++ b/packages/apollo-server-express/src/expressApollo.test.ts
@@ -1,4 +1,4 @@
-import express from 'express';
+import * as express from 'express';
import { ApolloServer } from './ApolloServer';
import testSuite, {
schema as Schema,
diff --git a/packages/apollo-server-express/src/expressApollo.ts b/packages/apollo-server-express/src/expressApollo.ts
index f23ff200..369c85d2 100644
--- a/packages/apollo-server-express/src/expressApollo.ts
+++ b/packages/apollo-server-express/src/expressApollo.ts
@@ -1,4 +1,4 @@
-import express from 'express';
+import * as express from 'express';
import {
GraphQLOptions,
HttpQueryError,
diff --git a/packages/apollo-server-hapi/src/ApolloServer.ts b/packages/apollo-server-hapi/src/ApolloServer.ts
index 968ca95d..d58af2f6 100644
--- a/packages/apollo-server-hapi/src/ApolloServer.ts
+++ b/packages/apollo-server-hapi/src/ApolloServer.ts
@@ -1,4 +1,4 @@
-import hapi from 'hapi';
+import * as hapi from 'hapi';
import { ApolloServerBase } from 'apollo-server-core';
import { parseAll } from 'accept';
import {
diff --git a/packages/apollo-server-hapi/src/hapiApollo.test.ts b/packages/apollo-server-hapi/src/hapiApollo.test.ts
index 0be8f10c..f5aebe0e 100644
--- a/packages/apollo-server-hapi/src/hapiApollo.test.ts
+++ b/packages/apollo-server-hapi/src/hapiApollo.test.ts
@@ -1,4 +1,4 @@
-import hapi from 'hapi';
+import * as hapi from 'hapi';
import { ApolloServer } from './ApolloServer';
import { Config } from 'apollo-server-core';
import 'mocha';
diff --git a/packages/apollo-server-hapi/src/hapiApollo.ts b/packages/apollo-server-hapi/src/hapiApollo.ts
index decfe258..4d25b63d 100644
--- a/packages/apollo-server-hapi/src/hapiApollo.ts
+++ b/packages/apollo-server-hapi/src/hapiApollo.ts
@@ -1,4 +1,4 @@
-import Boom from 'boom';
+import * as Boom from 'boom';
import { Server, Request } from 'hapi';
import {
GraphQLOptions,
diff --git a/packages/apollo-server-integration-testsuite/src/ApolloServer.ts b/packages/apollo-server-integration-testsuite/src/ApolloServer.ts
index a5f6ac39..e5292836 100644
--- a/packages/apollo-server-integration-testsuite/src/ApolloServer.ts
+++ b/packages/apollo-server-integration-testsuite/src/ApolloServer.ts
@@ -1,8 +1,8 @@
/* tslint:disable:no-unused-expression */
import { expect } from 'chai';
import { stub } from 'sinon';
-import http from 'http';
-import net from 'net';
+import * as http from 'http';
+import * as net from 'net';
import 'mocha';
import { sha256 } from 'js-sha256';
@@ -17,7 +17,7 @@ import {
import { PubSub } from 'graphql-subscriptions';
import { SubscriptionClient } from 'subscriptions-transport-ws';
-import WebSocket from 'ws';
+import * as WebSocket from 'ws';
import { execute } from 'apollo-link';
import { createHttpLink } from 'apollo-link-http';
diff --git a/packages/apollo-server-integration-testsuite/src/index.ts b/packages/apollo-server-integration-testsuite/src/index.ts
index 96047b40..b6069e57 100644
--- a/packages/apollo-server-integration-testsuite/src/index.ts
+++ b/packages/apollo-server-integration-testsuite/src/index.ts
@@ -17,8 +17,7 @@ import {
BREAK,
} from 'graphql';
-// tslint:disable-next-line
-const request = require('supertest');
+import request = require('supertest');
import { GraphQLOptions, Config } from 'apollo-server-core';
import gql from 'graphql-tag';
diff --git a/packages/apollo-server-memcached/src/index.ts b/packages/apollo-server-memcached/src/index.ts
index 9342187d..5bbd834a 100644
--- a/packages/apollo-server-memcached/src/index.ts
+++ b/packages/apollo-server-memcached/src/index.ts
@@ -1,5 +1,5 @@
import { KeyValueCache } from 'apollo-server-caching';
-import Memcached from 'memcached';
+import * as Memcached from 'memcached';
import { promisify } from 'util';
export class MemcachedCache implements KeyValueCache {
diff --git a/packages/apollo-server-redis/src/index.ts b/packages/apollo-server-redis/src/index.ts
index 2f05c16b..7ae20246 100644
--- a/packages/apollo-server-redis/src/index.ts
+++ b/packages/apollo-server-redis/src/index.ts
@@ -1,5 +1,5 @@
import { KeyValueCache } from 'apollo-server-caching';
-import Redis from 'redis';
+import * as Redis from 'redis';
import { promisify } from 'util';
export class RedisCache implements KeyValueCache {
diff --git a/packages/apollo-server/src/index.test.ts b/packages/apollo-server/src/index.test.ts
index cce84fb1..8afe2ce3 100644
--- a/packages/apollo-server/src/index.test.ts
+++ b/packages/apollo-server/src/index.test.ts
@@ -1,7 +1,7 @@
import { expect } from 'chai';
import 'mocha';
-import request from 'request';
+import * as request from 'request';
import { createApolloFetch } from 'apollo-fetch';
import { gql, ApolloServer } from './index';
diff --git a/packages/apollo-server/src/index.ts b/packages/apollo-server/src/index.ts
index 6299b322..272cb649 100644
--- a/packages/apollo-server/src/index.ts
+++ b/packages/apollo-server/src/index.ts
@@ -2,9 +2,9 @@
// an express app for you instead of registerServer (which you might not even
// use with express). The dependency is unused otherwise, so don't worry if
// you're not using express or your version doesn't quite match up.
-import express from 'express';
-import http from 'http';
-import net from 'net';
+import * as express from 'express';
+import * as http from 'http';
+import * as net from 'net';
import { ApolloServer as ApolloServerBase } from 'apollo-server-express';
export { GraphQLOptions, GraphQLExtension, gql } from 'apollo-server-core';
diff --git a/tsconfig.json b/tsconfig.json
index 9b486894..3107ed42 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,7 +3,6 @@
"target": "es2016",
"module": "commonjs",
"moduleResolution": "node",
- "esModuleInterop": true,
"sourceMap": true,
"declaration": true,
"declarationMap": true,