diff --git a/.gitignore b/.gitignore
index 9c8393b08044db79c32978aef471ee01be74cb69..9dd3f498ba6a5ba33ca596b3cdd004408084fab5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -81,3 +81,4 @@ android/build/
 samples/android/.externalNativeBuild/
 samples/android/.gradle/
 samples/android/build/
+js/flatbuffers.mjs
\ No newline at end of file
diff --git a/package.json b/package.json
index dc767154d464523de367c9858064fbe5c8205ebf..65169c0f9e1779436dbc6d901970ab6054893aa5 100644
--- a/package.json
+++ b/package.json
@@ -2,14 +2,17 @@
   "name": "flatbuffers",
   "version": "1.8.0",
   "description": "Memory Efficient Serialization Library",
-  "files": ["js/flatbuffers.js"],
-  "main": "js/flatbuffers.js",
+  "files": ["js/flatbuffers.js", "js/flatbuffers.mjs"],
+  "main": "js/flatbuffers",
+  "module": "js/flatbuffers.mjs",
   "directories": {
     "doc": "docs",
     "test": "tests"
   },
   "scripts": {
-    "test": "tests/JavaScriptTest.sh"
+    "test": "tests/JavaScriptTest.sh",
+    "append-esm-export": "sed \"s/this.flatbuffers = flatbuffers;/export { flatbuffers };/\" js/flatbuffers.js >> js/flatbuffers.mjs",
+    "prepublishOnly": "npm run append-esm-export"
   },
   "repository": {
     "type": "git",