Skip to content
This repository was archived by the owner on Feb 2, 2021. It is now read-only.

Commit 5777ee7

Browse files
Prevent doubling of typescript definitions
CLI has its own typescript definition files, which are used when we build typescript projects. Make sure to exclude them in case the project directory already has files with such name. This is the scenario with NativeScript TypeScript projects, which have android17.d.ts files in the templates and we are adding them again on build.
1 parent 465ff63 commit 5777ee7

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

declarations.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ interface IHook {
231231
}
232232

233233
interface ITypeScriptCompilationService {
234-
initialize(typeScriptFiles: string[]): void;
234+
initialize(typeScriptFiles: string[], definitionFiles?: string[]): void;
235235
compileAllFiles(): IFuture<void>;
236236
}
237237

services/typescript-compilation-service.ts

+11-6
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,16 @@ interface ITypeScriptCompilerMessages {
1717

1818
export class TypeScriptCompilationService implements ITypeScriptCompilationService {
1919
private typeScriptFiles: string[];
20+
private definitionFiles: string[];
2021

2122
constructor(private $childProcess: IChildProcess,
2223
private $fs: IFileSystem,
2324
private $logger: ILogger,
2425
private $config: Config.IConfig) { }
2526

26-
public initialize(typeScriptFiles: string[]): void {
27+
public initialize(typeScriptFiles: string[], definitionFiles?: string[]): void {
2728
this.typeScriptFiles = typeScriptFiles;
29+
this.definitionFiles = definitionFiles || [];
2830
}
2931

3032
public compileAllFiles(): IFuture<void> {
@@ -194,11 +196,14 @@ export class TypeScriptCompilationService implements ITypeScriptCompilationServi
194196

195197
private getTypeScriptDefinitionsFiles(): IFuture<string[]> {
196198
return (() => {
197-
var typeScriptDefinitionsFilesPath = path.join(__dirname, "../../../resources/typescript-definitions-files");
198-
var definitionsFiles = this.$fs.readDirectory(typeScriptDefinitionsFilesPath).wait();
199-
return _.map(definitionsFiles, (definitionFilePath: string) => {
200-
return path.join(typeScriptDefinitionsFilesPath, definitionFilePath);
201-
});
199+
var defaultTypeScriptDefinitionsFilesPath = path.join(__dirname, "../../../resources/typescript-definitions-files");
200+
var defaultDefinitionsFiles = this.$fs.readDirectory(defaultTypeScriptDefinitionsFilesPath).wait();
201+
202+
// Exclude definition files from default path, which are already part of the project (check only the name of the file)
203+
var remainingDefaultDefinitionFiles = _.filter(defaultDefinitionsFiles, defFile => !_.any(this.definitionFiles, f => path.basename(f) === defFile));
204+
return _.map(remainingDefaultDefinitionFiles,(definitionFilePath: string) => {
205+
return path.join(defaultTypeScriptDefinitionsFilesPath, definitionFilePath);
206+
}).concat(this.definitionFiles);
202207
}).future<string[]>()();
203208
}
204209
}

0 commit comments

Comments
 (0)