3

我正在使用一个项目,Typescript目前我在编译时遇到问题Typescript,然后使用Gulp.

var gulp = require('gulp');
var ts = require('gulp-typescript');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');

gulp.task('default', function () {
    gulp.src('vendor/**/*.js')
        // I want to add ts files then combile and concat
        .gulp.src('src/**/*.ts')
        .pipe(sourcemaps.init())
        .pipe(ts({
            noImplicitAny: true,
            out: 'output.js'
        }))
        .pipe(concat('all.js'))
        .pipe(uglify());
        .pipe(sourcemaps.write('/'))
        .pipe(gulp.dest('./dist/'));
});

换句话说,我需要做的是:

  1. 获取外部JavaScript库。
  2. 得到Typescripts
  3. Typescripts使用源映射编译。
  4. 将结果连接到先前添加的JavaScript.
  5. 丑化他们。
  6. 创建源地图。
  7. 将结果保存到某个文件夹中。

更新

或者只是一种确保TypeScript在继续将结果与JavaScript.

4

2 回答 2

5

如果你需要event-stream来自 npm 的包,那么你可以这样做:

var merge = require('event-stream').merge;

gulp.task('default', function() {
    var js = gulp.src('vendor/**/*.js');

    var ts = gulp.src('src/**/*.ts')
        .pipe(ts({
            noImplicitAny: true,
            out: 'output.js'
        }));

    return merge(js, ts)
        .pipe(concat('all.js'))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/'));
});

我不知道如何使用源地图工作,但我相信很容易弄清楚。

于 2016-03-22T16:57:04.427 回答
4

我更像一个coffeescript人,但是拆分成两个单独的任务怎么样(下面的解决方案未测试,并且./tmp文件夹有一个临时输出):

gulp.task('ts', function () {
    gulp.src('src/**/*.ts')
        .pipe(ts({
            noImplicitAny: true,
            out: 'output.js'
        }))
        .pipe(gulp.dest('./tmp/ts'));
});

gulp.task('default', ['ts'], function() {
    gulp.src(['vendor/**/*.js', './tmp/ts/output.js'])
        .pipe(sourcemaps.init())
        .pipe(uglify())
        .pipe(sourcemaps.write('/'))
        .pipe(gulp.dest('./dist/'));
});

用法(在您的终端中):

gulp default

Gulp 将首先运行ts任务,然后,一旦完成,它将运行default任务

于 2016-03-22T16:46:57.637 回答