diff --git a/.lintstagedrc.js b/.lintstagedrc.js
index 61152b6fb782a1497fb4a2f7314c740f3e6005c0..d1b83dbc7518b7d1db9e6e96851214787e58dfe1 100644
--- a/.lintstagedrc.js
+++ b/.lintstagedrc.js
@@ -1,25 +1,38 @@
-const ignoredFiles = [
-  'package.json',
-  'yarn.lock',
-  'tsconfig.json',
-  '.lintstagedrc.js',
-  '.eslintrc.js',
-];
-
-const path = require('path');
-
-const buildFormatCommand = filenames => {
-  const results = filenames
-    .map(f => path.relative(process.cwd(), f))
-    .filter(f => !ignoredFiles.includes(f));
-
-  return results.length ? `prettier --list-different --write ${results.join(' ')}` : '';
+const { ESLint } = require('eslint');
+
+const removeIgnoredFiles = async files => {
+  const eslint = new ESLint();
+  const isIgnored = await Promise.all(
+    files.map(file => {
+      return eslint.isPathIgnored(file);
+    })
+  );
+  const filteredFiles = files.filter((_, i) => !isIgnored[i]);
+  return filteredFiles.join(' ');
+};
+
+const buildFormatCommand = async files => {
+  const filesToLint = await removeIgnoredFiles(files);
+
+  if (!filesToLint || !filesToLint.length) {
+    return '';
+  }
+
+  const results = filesToLint.map(f => path.relative(process.cwd(), f));
+
+  return results.length
+    ? `prettier --ignore-unknown --list-different --write ${results.join(' ')}`
+    : '';
 };
 
-const buildLintCommand = filenames => {
-  const results = filenames
-    .map(f => path.relative(process.cwd(), f))
-    .filter(f => !ignoredFiles.includes(f));
+const buildLintCommand = async files => {
+  const filesToLint = await removeIgnoredFiles(files);
+
+  if (!filesToLint || !filesToLint.length) {
+    return '';
+  }
+
+  const results = filesToLint.map(f => path.relative(process.cwd(), f));
 
   return results.length ? `eslint --cache ${results.join(' ')}` : '';
 };