【问题标题】:Gulp task outputs fine when run manually, fails to output when used in gulp.watch手动运行时 Gulp 任务输出正常,在 gulp.watch 中使用时输出失败
【发布时间】:2015-09-11 00:43:43
【问题描述】:

我有一个 gulp 任务,它执行一些非常常见的任务 - 它运行 jshint 来验证我的代码,然后连接并最小化文件并将它们输出到单个 .min.js 文件中。

当我手动运行任务时(似乎)可以完美执行。但是第二次我尝试在 $gulp.watch 中使用它时,它不再输出我的文件(尽管它仍然执行并执行 jshint)。

我的任务中的代码:

gulp.src(path.join(workingPath, folder, '/*.js'))
        .pipe(jshint())
        .pipe(jshint.reporter(stylish))
        .pipe(jshint.reporter('fail'))     //stop build if errors found
        .on('error', function() {
            console.log("Please review and correct jshint errors.");
            this.end();
        })
        .pipe(order([                      //order files before concat - ensure module definitions are first
            "*.module.js",
            "*.js"
        ]))
        .pipe(concat(filename+'.js'))
        .pipe(gulp.dest(destinationPath))   //full combined version
        .pipe(uglify())
        .pipe(rename(filename+'.min.js'))
        .pipe(gulp.dest(destinationPath))  //minified combined version
        .on('error',function() {
            console.log("An error occurred during Gulp processing.");
            this.end();
        });

我的 gulp 手表(任务名为“组件”):

  gulp.watch(componentsBasePath+"/**/*.js",['components']);

我注意到的一件事是在手动运行结束时,我看到“进程完成,退出代码......”。如果我杀死我的 gulp.watch,它会输出“进程完成,退出代码......” - 然后它会创建输出文件!

我的目标是让我的“组件”任务在每次被手表触发时创建这些输出文件 - 而不仅仅是在我杀死手表时。

谢谢!
悬崖

【问题讨论】:

    标签: gulp gulp-watch


    【解决方案1】:

    好的,所以我用我的 hacky 方法来解决 jetbrains 的问题(我使用 phpstorm),你必须了解两件事。

    • gulp 观察者对文件保存采取行动。
    • jetbrains 不会自动更新项目文件(因为您发现它使用缓存)。

    为了解决这个问题,我创建了一个名为 saveSync 的宏,它执行以下操作:

    1. 全部保存
    2. 同步
    3. 同步
    4. 同步

    为什么我同步了 3 次?因为 gulp 需要几秒钟来完成任务(编译等),如果您在完成之前更新,显然项目视图不会正确更新。我还没有想出在宏本身中插入时间延迟的方法。

    创建宏后,我只是将ctrl + s从全部保存到宏中,然后它就起作用了。

    如果有一种“更清洁”的方法,我还没有发现。

    【讨论】:

      【解决方案2】:

      由其他人运行,他找到了问题的原因。虽然 - 事实证明它根本与 Gulp 无关。

      当我手动运行“组件”任务时,我使用的 IDE 会立即更新文件夹和文件结构,但是当我运行 gulp.watch 任务时它并没有做同样的事情。我很高兴地报告,虽然文件已成功创建,但在我终止任务之前它们从未出现在 IDE 中。

      【讨论】:

      • 只是出于好奇,您是否碰巧使用了 jetbrains 的任何东西?如果是这样,有一种方法可以使用宏来解决这个问题。
      • 是的!请您指出该解决方案的方向(使用宏)吗? :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多