gulp.run已弃用.我如何撰写任务?

 帅哥刘常胜 发布于 2023-01-26 03:32

这是一个组合任务,我不知道如何用任务依赖项替换它.

...
gulp.task('watch', function () {
 var server = function(){
  gulp.run('jasmine');
  gulp.run('embed');
 };
 var client = function(){
  gulp.run('scripts');
  gulp.run('styles');
  gulp.run('copy');
  gulp.run('lint');
 };
 gulp.watch('app/*.js', server);
 gulp.watch('spec/nodejs/*.js', server);
 gulp.watch('app/backend/*.js', server);
 gulp.watch('src/admin/*.js', client);
 gulp.watch('src/admin/*.css', client);
 gulp.watch('src/geojson-index.json', function(){
  gulp.run('copygeojson');
 });
});

相应的更改日志 https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md#35 [弃用gulp.run]

6 个回答
  • 请原谅我复活旧问题.接受的答案没有解决在设置手表之前运行任务的问题.下一个答案使用gulp.start即将消失.第三个答案指出应该使用常规函数,但示例似乎很奇怪.我做了一些搜索,但没有找到一个简单的例子.

    这是我的解决方案.我们的想法是定义常规的js函数,然后将它们注册为任务.然后,如果需要或从手表中直接调用这些功能.

    var 
      gulp     = require('gulp'),
      concat   = require('gulp-concat'),
      markdown = require('gulp-showdown')
    ;
    var scriptFiles   = [ 'ang/app.js' ];
    var markdownFiles = [ 'content/articles/*.md'];
    
    var watchTask = function() 
    {
      buildTask();
    
      gulp.watch(scriptFiles,  ['scripts' ]);
      gulp.watch(markdownFiles,['markdown']);
    };
    gulp.task('watch',watchTask);
    
    var buildTask = function()
    {
      scriptsTask();
      markdownTask();
    };
    gulp.task('build',buildTask);
    
    var markdownTask = function() 
    {
      gulp.src(markdownFiles)
        .pipe(markdown())
        .pipe(gulp.dest('web/articles'));
    };
    gulp.task('markdown',markdownTask);
    
    var scriptsTask = function() 
    {
      gulp.src(scriptFiles)
        .pipe(concat('app.js'))
        .pipe(gulp.dest('web/js'));
    
      gulp.src(
        [
          'bower_components/angular/angular.min.js',
          'bower_components/angular-route/angular-route.min.js'
        ])
        .pipe(concat('vendor.js'))
        .pipe(gulp.dest('web/js'));
    
      gulp.src(
        [
          'bower_components/angular/angular.min.js.map',
          'bower_components/angular-route/angular-route.min.js.map'
        ])
        .pipe(gulp.dest('web/js'));
    };
    gulp.task('scripts', scriptsTask);
    

    我是新来的.如果我忽略了一些显而易见的事情,请告诉我.

    2023-01-26 10:34 回答
  • 来源:https://github.com/gulpjs/gulp/issues/755

    gulp.start()从来没有打算成为一个公共api也不会被使用.正如上面评论中所述,任务管理正在下一个版本中被替换....所以gulp.start()将会破坏.

    gulp设计的真正目的是制作常规的Javascript函数,并且只进行调用它们的任务.

    例:

    function getJsFiles() {
        var sourcePaths = [
            './app/scripts/**/*.js',
            '!./app/scripts/**/*.spec.js',
            '!./app/scripts/app.js'
        ];
    
        var sources = gulp.src(sourcePaths, { read: false }).pipe(angularFilesort());
    
        return gulp.src('./app/index.html')
            .pipe(injector(sources, { ignorePath: 'app', addRootSlash: false }))
            .pipe(gulp.dest('./app'));
    }  
    

    gulp.task('js', function () {
        jsStream = getJsFiles();
    });
    

    2023-01-26 10:37 回答
  • 正如@dman提到的那样,gulp.start将在下一个版本中被丢弃.也可以在这个gulp问题中看到.

    在@Pavel Evstigneev答案的评论中,@ joemaller提到我们可以在这种情况下使用run-sequence.

    但请注意,run-sequence的作者说:

    这是一个临时解决方案,直到gulp 4.0发布,它支持串行或并行定义任务依赖.

    请注意,此解决方案是一个黑客攻击,并可能会停止使用未来的更新gulp.

    所以,在gulp 4.0之前,我们可以使用run-sequence,在4.0之后,我们可以使用gulp.

    2023-01-26 11:13 回答
  • 口香糖4

    gulp.parallel('taskName1', 'taskName2')()
    gulp.series('taskName1', 'taskName2')()
    

    我喜欢gulp4!

    2023-01-26 11:36 回答
  • 或者你可以这样做:

    gulp.start('task1', 'task2');
    

    2023-01-26 11:43 回答
  • gulp.task('watch', function () {
      var server = ['jasmine', 'embed'];
      var client = ['scripts', 'styles', 'copy', 'lint'];
      gulp.watch('app/*.js', server);
      gulp.watch('spec/nodejs/*.js', server);
      gulp.watch('app/backend/*.js', server);
      gulp.watch('src/admin/*.js', client);
      gulp.watch('src/admin/*.css', client);
      gulp.watch('src/geojson-index.json', ['copygeojson']);
    });
    

    您不再需要传递函数(尽管您仍然可以)来运行任务.您可以为监视提供一系列任务名称,它将为您执行此操作.

    2023-01-26 12:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有