Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get gulp-typescript to output to the same directory as the source file?

I have the following pipeline

  function typescripts() {
    return gulp.src(paths.watchedFiles.ts)
        .pipe(cached('typescripts'))
        .pipe(plumber())
        .pipe(addsrc(paths.ts.include))
      //TODO: Need to eliminate the original source path (ex. /users/userName) from the sourcemap file.
        .pipe(sourcemaps.init())
        .pipe(ts(tsProjectMode, undefined, ts.reporter.fullReporter(true))).js
        .pipe(gulpIgnore.exclude(paths.ts.excludeFromPostCompilePipeline))
        .pipe(ngAnnotate({
          remove: false,
          add: true,
          gulpWarnings: false //typescript removes base path for some reason.  Warnings result that we don't want to see.
        }))
        .pipe(sourcemaps.write('.', {includeContent: false}))
        .pipe(gulp.dest(paths.ts.basePath));
  }

I seem to have to make "hard code" the dest path based on the root of the src path. If my src path is app/modules/**.ts my dest path must be app/modules. This limits me to using a single root src path and I cannot use siblings.

I would like to be able to make my src ['path1/**/*.ts', 'path2/**/*.ts] and have the transpiled output written to the same folder where the source file was located.

like image 491
Richard Collette Avatar asked Apr 08 '15 02:04

Richard Collette


1 Answers

If you have source files like that:

gulp.src(['path1/**/*.ts', 'path2/**/*.ts])

Than it's equal to that:

gulp.src(['./path1/**/*.ts', './path2/**/*.ts], { base: '.' })

Which means, you can put your destination to:

gulp.dest('.')

since that's the lowest common denominator. The rest is done by Gulp.

like image 98
ddprrt Avatar answered Oct 23 '22 22:10

ddprrt