elixir.queueTask未定义

时间:2016-03-16 13:34:21

标签: gulp laravel-elixir

我对Laravel 5.2和Elixir / gulp相当新,但是当我从命令行运行gulp时,我遇到了一个未定义queueTask的问题。

我想要做的是扩展elixir以删除一些文件(根据我能找到的所有文档,这就是我需要做的事情),所以我有这个:

var gulp = require('gulp');
var elixir = require("laravel-elixir");
var del = require('del');

elixir.extend("remove", function(path) {
        gulp.task("removeFiles", function() {
            return del(path);
        });
        return this.queueTask("removeFiles");
    });

然后在我的混音中我有:

    .remove([
        "path/to/file1/filename1",
        "path/to/file2/filename2"
    ])

当我在命令行中运行gulp时,我得到:

return this.queueTask("removeFiles");
            ^
TypeError: undefined is not a function

有人可以对我做错了吗?

2 个答案:

答案 0 :(得分:3)

自Elixir v3.0.0以来,API再次发生了变化。所以对于v4.0.0,你必须这样做:

var elixir = require('laravel-elixir');
var del = require('del');

var Task = elixir.Task;

elixir.extend('remove', function (path) {
    new Task('remove', function () {
        return del(path);
    });
});

然后你可以在你的管道中调用它:

mix.remove([
    "path/to/file1/filename1",
    "path/to/file2/filename2"
]);

差异似乎是调用elixir.extend而不是elixir.Task.extend。然后返回new elixir.Task

答案 1 :(得分:0)

Elixir v3.0.0.

中更改了API

您不再需要致电Gulp.task()。 Elixir将处理这个问题,而你必须创建一个新任务。

var Elixir = require('laravel-elixir');
var del = require('del');

Elixir.Task.extend('remove', function (path) {
    new Task('remove', function () {
        return del(path);
    });
});