angularjs - 我如何合并两个 gulp 任务

标签 angularjs typescript gulp gulp-concat

我正在使用 gulp 编译我的 typescript 文件并创建 output.js 文件。

是否可以有一个编译 typescript 文件并将其与 Angular 库连接的任务?

这是我当前文件的样子(如下)。首先,它运行一个创建 output.js 文件的 typescript 任务,然后运行一个连接脚本插件文件和 output.js 的脚本任务。

'use strict';
var gulp = require('gulp')

var paths = {
  distScriptsDir: '../../Themes/mastter/Scripts',
  srcScriptsPlugins: [
    'node_modules/jquery/dist/jquery.min.js',
    'node_modules/angular/angular.min.js',
    'node_modules/angular-route/angular-route.min.js',
    'node_modules/angular-translate/dist/angular-translate.min.js',
    'node_modules/angular-translate/dist/angular-translate-loader-url/angular-translate-loader-url.min.js',
    'node_modules/angular-bootstrap/dist/ui-bootstrap-tpls.js',
    'Scripts/angular-sticky.min.js',
    'Scripts/dragme.js',
    'Scripts/jasny-bootstrap.min.js',
    'node_modules/lodash/dist/lodash.min.js',
    'node_modules/angular-google-maps/dist/angular-google-maps.min.js'
  ],
  srcScriptsFile: [
    'output.js'
  ]
};


//typescript
gulp.task('typescript', function () {
  var ts = require('gulp-typescript');
  var tsResult = gulp.src( 'all.ts')
    .pipe(ts({
      noImplicitAny: true,
      out: 'output.js'
    }));
  return tsResult.js.pipe(gulp.dest(''));
});

// scripts task
gulp.task('scripts', function () {

  var concat = require('gulp-concat'),
      plumber = require('gulp-plumber'),
      uglify = require('gulp-uglify');

  return gulp.src(paths.srcScriptsPlugins.concat(paths.srcScriptsFile))
    .pipe(plumber({
      errorHandler: function (e) {
          console.log(e.toString());
          this.emit('end');
      }
    }))
  //    .pipe(uglify())
  .pipe(concat('main.js'))
  .pipe(gulp.dest(paths.distScriptsDir));

});

// default task
gulp.task('default', [
 'typescript',
  'scripts'
 ]);

最佳答案

我为此使用了一个 watch 任务,里面有一堆 gulp.watch。一个用于观察 .ts 变化并运行 typescript 编译器,它将在任何位置输出一个 js 文件,另一个 gulp.watch 用于观察 .js 文件并运行脚本任务。在这种情况下,事情会由 watch 自动完成,您不必将任务组合成一个任务。

gulp.task('watch', function() {
    gulp.watch(['dir/*.ts','otherdir/*.ts',...], ['typescript']);
    gulp.watch(['dir/*.js','otherdir/*.js',...], ['scripts']); //make sure to include the .ts result folder...
});

关于angularjs - 我如何合并两个 gulp 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30338289/

相关文章:

javascript - 我如何在 Angularjs 中广播一个对象?

angularjs - $http : how to get filename of headers from WebApi with CORS

javascript - 当我选择一个选项时,angularjs 选项列表变为空

javascript - tslint 不检测 *.js 文件中未声明的变量

html - Gulp将多个css文件编译成一个

javascript - 一吞任务文件 pr 主题

node.js - 运行任务时 Gulp 错误 : ENOENT, lstat

javascript - 使用 Jasmine 测试 Angular Promise

javascript - 传入方法的动态 Typescript 类型

angular - 自定义 AWS Amplify cognito 登录/注册组件?