【问题标题】:Multiple gulp sources and destinations多个 gulp 来源和目的地
【发布时间】:2015-10-11 23:29:19
【问题描述】:

我正在尝试使用以下目录结构

-- src |__ app |__ x.ts |__ test |__ y.ts -- build |__ app |__ js |__ test |__ js

我希望在“gulp compile”中使用它,我在 build/app 和 build/test 中有我生成的 js 文件。即我有多个来源和多个目的地。 我不想为测试创建一个新的 gulp 目标。以下是我试图完成任务的两种不同方法

gulp.task('compile', function () {
    //path to src/app typescript files
    var app_js = gulp.src('./src/app/**/*.ts')
        .pipe(tsc(tsProject))
    //path to src/test typescript files
    var test_js = gulp.src('./src/test/**/*.ts')
        .pipe(tsc(tsProject));
    return merge([
        app_js.js.pipe(gulp.dest('./build/src/app/')),
        test_js.js.pipe(gulp.dest('./build/src/test/'))
    ]);
});

gulp.task('bundle', function () {
    var paths = [
        { src: './src/app/**/*.ts', dest: './build/src/app/' },
        { src: './src/test/**/*.ts', dest: './build/src/test/' }
    ];
    var tasks = paths.map(function (path) {
        return gulp.src(path.src).pipe(tsc(tsProject)).pipe(gulp.dest(path.dest));
    })
    return merge(tasks);
});

但是,每次我运行“gulp compile”或“gulp bundle”时,都会遇到以下问题

events.js:141 投掷者; // 未处理的“错误”事件 ^错误:EOF 后的 stream.push() 在 readableAddChunk (_stream_readable.js:132:15)

有人能告诉我我在这里做错了什么吗? 注意:我尝试同时使用 merge-stream 和 merge2 包。

【问题讨论】:

    标签: javascript typescript gulp mocha.js


    【解决方案1】:

    哦!感谢您的及时回复。

    我最终得到以下解决方案

    gulp.task('compile', function () {
        return gulp.src(['src/**/*.ts'] )
            .pipe(sourcemaps.init())
            .pipe(tsc(tsProject))
            .pipe(sourcemaps.write('.'))
            .pipe(gulp.dest('build'));
    });"
    

    【讨论】:

      【解决方案2】:

      我在我的一个项目中具有相同的项目结构,并且我将以下内容用于构建任务:

      var tsProject = tsc.createProject({
        removeComments : false,
        noImplicitAny : false,
        target : "ES5",
        module : "commonjs",
        declarationFiles : false
      });
      
      gulp.task("build-source", function() {
        return gulp.src(__dirname + "/source/**/**.ts")
                   .pipe(tsc(tsProject))
                   .js.pipe(gulp.dest(__dirname + "/build/source/"));
      });
      
      var tsTestProject = tsc.createProject({
        removeComments : false,
        noImplicitAny : false,
        target : "ES5",
        module : "commonjs",
        declarationFiles : false
      });
      
      gulp.task("build-test", function() {
        return gulp.src(__dirname + "/test/*.test.ts")
                   .pipe(tsc(tsTestProject))
                   .js.pipe(gulp.dest(__dirname + "/build/test/"));
      });
      
      gulp.task("build", function(cb) {
        runSequence("lint", "build-source", "build-test", cb);
      });
      

      我正在使用两个独立的任务,因为使用具有多个源和多个目标的 tsProject 对象可能会导致意外行为。

      您必须在任务之外创建项目。您不能在多个任务中使用同一个项目。相反,创建多个项目或使用单个任务来编译您的源代码。 - Source

      我还将以下内容用于捆绑任务:

      gulp.task("bundle-source", function () {
        var b = browserify({
          standalone : 'inversify',
          entries: __dirname + "/build/source/inversify.js",
          debug: true
        });
      
        return b.bundle()
          .pipe(source("inversify.js"))
          .pipe(buffer())
          .pipe(gulp.dest(__dirname + "/bundled/source/"));
      });
      
      gulp.task("bundle-test", function () {
        var b = browserify({
          entries: __dirname + "/build/test/inversify.test.js",
          debug: true
        });
      
        return b.bundle()
          .pipe(source("inversify.test.js"))
          .pipe(buffer())
          .pipe(gulp.dest(__dirname + "/bundled/test/"));
      });
      
      gulp.task("bundle", function(cb) {
        runSequence("build", "bundle-source", "bundle-test", "document", cb);
      });
      

      我的整个构建脚本可用here。希望对您有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-22
        • 2016-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-09
        相关资源
        最近更新 更多