diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index afce639..8968f5f 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -19,5 +19,7 @@ jobs:
           node-version: "18.x"
       - name: Install dependencies
         run: yarn
+      - name: Build
+        run: yarn build
       - name: Run Tests
         run: yarn test
diff --git a/package.json b/package.json
index 4dccc90..0e70931 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
   ],
   "scripts": {
     "generate-docs": "typedoc --plugin typedoc-plugin-markdown --gitRevision master --readme none ./src/valkyrie-wrapper.ts",
-    "build": "rimraf ./dist && tsc && tsc --build tsconfig.cjs.json",
+    "build": "rimraf ./dist && tsc --build tsconfig.esm.json && tsc --build tsconfig.cjs.json",
     "test": "jest"
   },
   "devDependencies": {
@@ -43,4 +43,4 @@
     "url": "git+https://github.com/valkyrie-fnd/valkyrie-event-adapter.git"
   },
   "packageManager": "yarn@3.3.0"
-}
+}
\ No newline at end of file
diff --git a/tsconfig-base.json b/tsconfig-base.json
index ed88be3..3719b13 100644
--- a/tsconfig-base.json
+++ b/tsconfig-base.json
@@ -5,11 +5,13 @@
       "DOM"
     ],
     "declaration": true,
-    "declarationDir": "./dist/types",
     "moduleResolution": "node",
     "esModuleInterop": true,
   },
   "include": [
     "./**/*"
+  ],
+  "exclude": [
+    "node_modules",
   ]
 }
\ No newline at end of file
diff --git a/tsconfig.build.json b/tsconfig.build.json
new file mode 100644
index 0000000..af2094e
--- /dev/null
+++ b/tsconfig.build.json
@@ -0,0 +1,7 @@
+{
+  "extends": "./tsconfig-base.json",
+  "exclude": [
+    "**/tests/**/*",
+    "jest.config.ts"
+  ]
+}
\ No newline at end of file
diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json
index 40b4e18..c938cf6 100644
--- a/tsconfig.cjs.json
+++ b/tsconfig.cjs.json
@@ -1,6 +1,7 @@
 {
-  "extends": "./tsconfig-base.json",
+  "extends": "./tsconfig.build.json",
   "compilerOptions": {
+    "declaration": false,
     "module": "CommonJS",
     "target": "ES5",
     "outDir": "./dist/cjs",
diff --git a/tsconfig.esm.json b/tsconfig.esm.json
new file mode 100644
index 0000000..4e37ded
--- /dev/null
+++ b/tsconfig.esm.json
@@ -0,0 +1,9 @@
+{
+  "extends": "./tsconfig.build.json",
+  "compilerOptions": {
+    "module": "ESNext",
+    "target": "ES5",
+    "outDir": "./dist/esm",
+    "declarationDir": "./dist/types",
+  }
+}
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
index 2c40a33..97b5a78 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,6 +3,6 @@
   "compilerOptions": {
     "module": "ESNext",
     "target": "ES5",
-    "outDir": "./dist/esm",
+    "outDir": "./dist/esm"
   }
 }
\ No newline at end of file