diff --git a/src/services/services.ts b/src/services/services.ts
index 30c6b88b1e2..78003351a57 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -1834,7 +1834,8 @@ namespace ts {
const fileContents = sourceFile.text;
const result: TodoComment[] = [];
- if (descriptors.length > 0) {
+ // Exclude node_modules files as we don't want to show the todos of external libraries.
+ if (descriptors.length > 0 && !isNodeModulesFile(sourceFile.fileName)) {
const regExp = getTodoCommentsRegExp();
let matchArray: RegExpExecArray;
@@ -1958,6 +1959,12 @@ namespace ts {
(char >= CharacterCodes.A && char <= CharacterCodes.Z) ||
(char >= CharacterCodes._0 && char <= CharacterCodes._9);
}
+
+ function isNodeModulesFile(path: string): boolean {
+ const node_modulesFolderName = "/node_modules/";
+
+ return path.indexOf(node_modulesFolderName) !== -1;
+ }
}
function getRenameInfo(fileName: string, position: number): RenameInfo {
diff --git a/tests/cases/fourslash/todoComments18.ts b/tests/cases/fourslash/todoComments18.ts
new file mode 100644
index 00000000000..d591f98236f
--- /dev/null
+++ b/tests/cases/fourslash/todoComments18.ts
@@ -0,0 +1,8 @@
+///
+
+// Tests node_modules name in file still gets todos.
+
+// @Filename: /node_modules_todoTest0.ts
+//// // [|TODO|]
+
+verify.todoCommentsInCurrentFile(["TODO"]);
\ No newline at end of file
diff --git a/tests/cases/fourslash/todoComments19.ts b/tests/cases/fourslash/todoComments19.ts
new file mode 100644
index 00000000000..2f14ba69a57
--- /dev/null
+++ b/tests/cases/fourslash/todoComments19.ts
@@ -0,0 +1,11 @@
+///
+
+// Tests that todos are not found in node_modules folder.
+
+// @Filename: todoTest0.ts
+//// import * as foo1 from "fake-module";
+
+// @Filename: node_modules/fake-module/ts.ts
+//// // TODO
+
+verify.todoCommentsInCurrentFile(["TODO"]);
diff --git a/tests/cases/fourslash/todoComments20.ts b/tests/cases/fourslash/todoComments20.ts
new file mode 100644
index 00000000000..2284236714d
--- /dev/null
+++ b/tests/cases/fourslash/todoComments20.ts
@@ -0,0 +1,6 @@
+///
+
+// @Filename: dir1/node_modules/todoTest0.ts
+//// // TODO
+
+verify.todoCommentsInCurrentFile(["TODO"]);