-->

How can I get gulp-typescript to output to the sam

2020-08-19 02:13发布

问题:

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.

回答1:

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.