diff --git a/.gitignore b/.gitignore
index 51e6a31b74f15ddfddf3c541d94f840449e48069..2cea822c18fb7c581a82f9cfd94b51bfbe0e0ce6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
 /node_modules
 /build
 /built
+built
 /data
 /.cache-loader
 npm-debug.log
diff --git a/package.json b/package.json
index ba5eab2fbb5fee82bcce672a839c77cff2d8d7aa..8eff18b097904bc3257006f4788fd6f9dfb0434a 100644
--- a/package.json
+++ b/package.json
@@ -43,7 +43,6 @@
 		"@types/is-root": "1.0.0",
 		"@types/is-url": "1.2.28",
 		"@types/js-yaml": "3.11.2",
-		"@types/jsdom": "11.0.6",
 		"@types/koa": "2.0.46",
 		"@types/koa-bodyparser": "5.0.1",
 		"@types/koa-compress": "2.0.8",
@@ -61,7 +60,6 @@
 		"@types/mongodb": "3.1.3",
 		"@types/ms": "0.7.30",
 		"@types/node": "10.5.5",
-		"@types/parse5": "5.0.0",
 		"@types/portscanner": "2.1.0",
 		"@types/pug": "2.0.4",
 		"@types/qrcode": "1.2.0",
diff --git a/src/games/reversi/package.json b/src/games/reversi/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..5e7fdcb58aab75c196088a4bb7fce074ea25ca92
--- /dev/null
+++ b/src/games/reversi/package.json
@@ -0,0 +1,18 @@
+{
+  "name": "misskey-reversi",
+  "version": "0.0.5",
+  "description": "Misskey reversi engine",
+  "keywords": [
+    "misskey"
+  ],
+  "author": "syuilo <i@syuilo.com>",
+  "license": "MIT",
+  "repository": "https://github.com/syuilo/misskey.git",
+  "bugs": "https://github.com/syuilo/misskey/issues",
+  "main": "./built/core.js",
+  "types": "./built/core.d.ts",
+  "scripts": {
+    "build": "tsc"
+  },
+  "dependencies": {}
+}
diff --git a/src/games/reversi/tsconfig.json b/src/games/reversi/tsconfig.json
new file mode 100644
index 0000000000000000000000000000000000000000..851fb6b7e4554b28d4240c6d892d761c635eb082
--- /dev/null
+++ b/src/games/reversi/tsconfig.json
@@ -0,0 +1,21 @@
+{
+	"compilerOptions": {
+		"noEmitOnError": false,
+		"noImplicitAny": false,
+		"noImplicitReturns": true,
+		"noFallthroughCasesInSwitch": true,
+		"experimentalDecorators": true,
+		"declaration": true,
+		"sourceMap": false,
+		"target": "es2017",
+		"module": "commonjs",
+		"removeComments": false,
+		"noLib": false,
+		"outDir": "./built",
+		"rootDir": "./"
+	},
+	"compileOnSave": false,
+	"include": [
+		"./core.ts"
+	]
+}
diff --git a/src/mfm/html.ts b/src/mfm/html.ts
index eeaa4d81366cd60a61ae5041571107f0dd7ec087..c047043cb7e0f3cc0e862830ab416174b3974841 100644
--- a/src/mfm/html.ts
+++ b/src/mfm/html.ts
@@ -1,5 +1,5 @@
 const { lib: emojilib } = require('emojilib');
-import { JSDOM } from 'jsdom';
+const JSDOM = require('jsdom');
 import config from '../config';
 import { INote } from '../models/note';
 import { TextElement } from './parse';