diff --git a/src/services/refactors/moveToNewFile.ts b/src/services/refactors/moveToNewFile.ts
index 287178169e6c1..172944aa4bda1 100644
--- a/src/services/refactors/moveToNewFile.ts
+++ b/src/services/refactors/moveToNewFile.ts
@@ -402,7 +402,13 @@ namespace ts.refactor {
switch (name.kind) {
case SyntaxKind.Identifier:
if (isUnused(name)) {
- changes.delete(sourceFile, name);
+ if (varDecl.initializer && isRequireCall(varDecl.initializer, /*requireStringLiteralLikeArgument*/ true)) {
+ changes.delete(sourceFile,
+ isVariableDeclarationList(varDecl.parent) && length(varDecl.parent.declarations) === 1 ? varDecl.parent.parent : varDecl);
+ }
+ else {
+ changes.delete(sourceFile, name);
+ }
}
break;
case SyntaxKind.ArrayBindingPattern:
diff --git a/tests/cases/fourslash/moveToNewFile_requireImport1.ts b/tests/cases/fourslash/moveToNewFile_requireImport1.ts
new file mode 100644
index 0000000000000..37fb2b7e1a44a
--- /dev/null
+++ b/tests/cases/fourslash/moveToNewFile_requireImport1.ts
@@ -0,0 +1,28 @@
+///
+
+// @allowJs: true
+
+// @filename: /a.js
+////module.exports = 1;
+
+// @filename: /b.js
+////var a = require("./a");
+////[|function f() {
+//// a;
+////}|]
+
+verify.noErrors();
+
+verify.moveToNewFile({
+ newFileContents: {
+ "/b.js": "",
+
+ "/f.js":
+`var a = require("./a");
+
+function f() {
+ a;
+}
+`,
+ },
+});
diff --git a/tests/cases/fourslash/moveToNewFile_requireImport2.ts b/tests/cases/fourslash/moveToNewFile_requireImport2.ts
new file mode 100644
index 0000000000000..ebd39990ffab9
--- /dev/null
+++ b/tests/cases/fourslash/moveToNewFile_requireImport2.ts
@@ -0,0 +1,33 @@
+///
+
+// @allowJs: true
+
+// @filename: /a.js
+////module.exports = 1;
+
+// @filename: /b.js
+////var a = require("./a"),
+//// b = require("./a"),
+//// c = require("./a");
+////[|function f() {
+//// b;
+////}|]
+
+verify.noErrors();
+
+verify.moveToNewFile({
+ newFileContents: {
+ "/b.js":
+`var a = require("./a"),
+ c = require("./a");
+`,
+
+ "/f.js":
+`var b = require("./a");
+
+function f() {
+ b;
+}
+`,
+ },
+});