Skip to content

Commit 28239f2

Browse files
committed
Do not exclude outDir if exclude is given
1 parent db62503 commit 28239f2

File tree

2 files changed

+69
-6
lines changed

2 files changed

+69
-6
lines changed

src/compiler/commandLineParser.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -852,14 +852,13 @@ namespace ts {
852852
errors.push(createCompilerDiagnostic(Diagnostics.Unknown_option_excludes_Did_you_mean_exclude));
853853
}
854854
else {
855-
// By default, exclude common package folders
855+
// By default, exclude common package folders and the outDir
856856
excludeSpecs = ["node_modules", "bower_components", "jspm_packages"];
857-
}
858857

859-
// Always exclude the output directory unless explicitly included
860-
const outDir = json["compilerOptions"] && json["compilerOptions"]["outDir"];
861-
if (outDir) {
862-
excludeSpecs.push(outDir);
858+
const outDir = json["compilerOptions"] && json["compilerOptions"]["outDir"];
859+
if (outDir) {
860+
excludeSpecs.push(outDir);
861+
}
863862
}
864863

865864
if (fileNames === undefined && includeSpecs === undefined) {

src/harness/unittests/matchFiles.ts

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,6 +1020,70 @@ namespace ts {
10201020
assert.deepEqual(actual.wildcardDirectories, expected.wildcardDirectories);
10211021
assert.deepEqual(actual.errors, expected.errors);
10221022
});
1023+
it("exclude outDir by default", () => {
1024+
const json = {
1025+
compilerOptions: {
1026+
outDir: "./x"
1027+
}
1028+
};
1029+
const expected: ts.ParsedCommandLine = {
1030+
options: {
1031+
outDir: "./x"
1032+
},
1033+
errors: [],
1034+
fileNames: [
1035+
"c:/dev/a.ts",
1036+
"c:/dev/b.ts",
1037+
"c:/dev/c.d.ts",
1038+
"c:/dev/z/a.ts",
1039+
"c:/dev/z/aba.ts",
1040+
"c:/dev/z/abz.ts",
1041+
"c:/dev/z/b.ts",
1042+
"c:/dev/z/bba.ts",
1043+
"c:/dev/z/bbz.ts",
1044+
],
1045+
wildcardDirectories: {
1046+
"c:/dev": ts.WatchDirectoryFlags.Recursive
1047+
}
1048+
};
1049+
const actual = ts.parseJsonConfigFileContent(json, caseInsensitiveHost, caseInsensitiveBasePath);
1050+
assert.deepEqual(actual.fileNames, expected.fileNames);
1051+
assert.deepEqual(actual.wildcardDirectories, expected.wildcardDirectories);
1052+
assert.deepEqual(actual.errors, expected.errors);
1053+
});
1054+
it("should not exclude outDir if exclude is given", () => {
1055+
const json = {
1056+
compilerOptions: {
1057+
outDir: "./x"
1058+
},
1059+
exclude: [
1060+
"z"
1061+
]
1062+
};
1063+
const expected: ts.ParsedCommandLine = {
1064+
options: {
1065+
outDir: "./x"
1066+
},
1067+
errors: [],
1068+
fileNames: [
1069+
"c:/dev/a.ts",
1070+
"c:/dev/b.ts",
1071+
"c:/dev/c.d.ts",
1072+
"c:/dev/x/a.ts",
1073+
"c:/dev/x/aa.ts",
1074+
"c:/dev/x/b.ts",
1075+
"c:/dev/x/y/a.ts",
1076+
"c:/dev/x/y/b.ts",
1077+
],
1078+
wildcardDirectories: {
1079+
"c:/dev": ts.WatchDirectoryFlags.Recursive
1080+
}
1081+
};
1082+
const actual = ts.parseJsonConfigFileContent(json, caseInsensitiveHost, caseInsensitiveBasePath);
1083+
assert.deepEqual(actual.fileNames, expected.fileNames);
1084+
assert.deepEqual(actual.wildcardDirectories, expected.wildcardDirectories);
1085+
assert.deepEqual(actual.errors, expected.errors);
1086+
});
10231087
describe("with trailing recursive directory", () => {
10241088
it("in includes", () => {
10251089
const json = {

0 commit comments

Comments
 (0)