Hallo Zusammen,
heute mal zwei Frage an die GULP Spezialisten.
Ausgangssituation:
1 | gulp.task("bundle", gulp.series("removeWebpackModules", "lint", "webpack_form_prod", "transpileAllPublicTypescript", "transpileAllPrivateTypescript", "wait", "copy"/*, "uglifyF", "uglifyR"*/, "zip"));
|
In diesem Aufruf werden nacheinander verschiedene Schritte erledigt um
meine Anwendung zu bundeln und für das Deployment vorzubereiten.
Die beiden Funktionen "transpileAllPublicTypescript" und
"transpileAllPrivateTypescript" sind gerade meine beiden Sorgenkinder.
Da beide Funktionen identisch sind und nur mit unterschiedlichen
Informationen versorgt werden zeige ich hier nur eine.
1 | async function transpileAllPrivateTypescript(done) {
|
2 | for (const typeScriptModule of [...typeScriptPublicModules]) {
|
3 | var tsProject = ts.createProject('tsconfig.json');
|
4 | await gulp.src([TYPESCRIPTPATH + typeScriptModule.sourceFile])
|
5 | .pipe(tsProject())
|
6 | .pipe(replace("export {};", ""))
|
7 | .pipe(gulp.dest(typeScriptModule.targetPath));
|
8 | }
|
9 | done();
|
10 | }
|
Die beiden Funktionen machen was sie sollen. Das Problem ist allerdings,
des es mir nicht gelingt sie so zu formulieren, dass die gesamte
Ausführung wartet bis beide zu Ende gelaufen sind.
Das führt aktuell dazu, dass ich eine Funktion "wait" benutzte um
sicherzustellen das die Ergebnisse der beiden auch da sind bevor ich die
Funktion "copy" ausführe.
Die zweite Frage, die ich hätte, in der tsconfig.json habe ich für das
aktuelle Projekt auch den Schalter "declaration=true" gesetzt.
Da die generierten d.ts Files leider auch im Zielordner landen würde ich
gerne im letzten pipe - Aufruf eine Weiche einbauen mit der ich js Datei
im eigentlichen Zielordner und d.ts Datei in einem anderen Ordner meines
Projektes ablegen kann.
Leider übersteigen beide Problemstellungen meinen aktuellen Wissensstand
bei GULP. Deshalb meine Bitte um eine kleine Hilfestellung.
Gruß und Danke
Frank