由于缺少获取功能而使用Gulp-Hub导致多个文件中的Gulp 4拆分任务失败

时间:2016-07-22 08:59:58

标签: gulp gulp-4

使用Gulp 4和recipe使用gulp-hub将我的任务拆分成多个文件只会在尝试加载任务文件时抛出此错误。任务文件非常简单,只是想测试一切正常。

我在Github上的Undertaker上找到了get函数的引用,但是我真的不明白他们想说的是什么,看起来gulp-hub似乎正在解除

其他人遇到这个并知道如何解决它?

Gulp文件

'use strict';

var gulp = require('gulp');

var HubRegistry = require('gulp-hub');

// Load some files into the registry
var hub = new HubRegistry(['gulp/tasks/*.js']); // only one file help.js

// Tell gulp to use the tasks just loaded
gulp.registry(hub);

帮助任务 - /gulp/tasks/help.js

'use strict';

var gulp = require('gulp');

gulp.task('help', []);

错误抛出

$ gulp help
[01:36:37] Loading gulp\tasks\help.js

D:\projects\app\node_modules\undertaker\lib\helpers\validateRegistry.js:36
      throw err;
      ^
 AssertionError: Custom registry must have `get` function
    at validateRegistry (D:\projects\app\node_modules\undertaker\lib\helpers\validateRegistry.js:28:5)
    at Gulp.registry (D:\projects\app\node_modules\undertaker\lib\registry.js:17:3)
    at Object.<anonymous> (D:\projects\app\gulpfile.js:11:6)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Module.require (module.js:468:17)
    at require (internal/module.js:20:19)

3 个答案:

答案 0 :(得分:11)

您可能正在运行gulp-hub@0.8.0,这是当前发布到npm的版本,专为gulp 3.x而设计。

对于gulp 4.x,您需要从其中一个development branches on GitHub安装gulp-hub。目前有4.0registry-init

4.0分支现在无法正常工作,因为undertaker的{​​{3}}失败了。

registry-init分支似乎有效。您可以这样安装:

npm uninstall gulp-hub
npm install --save-dev frankwallis/gulp-hub#registry-init

答案 1 :(得分:1)

2016年10月12日更新

我使用yeoman-fountainjs并在他们的package.json中使用以下dev-dependency定义,它就像一个魅力:

"gulp": "gulpjs/gulp#4ed9a4a3275559c73a396eff7e1fde3824951ebb",
"gulp-hub": "frankwallis/gulp-hub#d461b9c700df9010d0a8694e4af1fb96d9f38bf4",

答案 2 :(得分:1)

我遇到了同样的错误,但这是因为我未能正确地向Gulp公开任务。

起初,我在Dependency Injector文件中使用这样的CommonJS并得到了相同的错误: constructor( @Optional() private wheels : number, @Optional() private model : string, @Optional() private automatic : boolean, @Optional() private colour : string, @Optional() private engine : string, @Optional() private seats :number ) { }

因此我将其更改为Gulp任务,并且可以正常工作: help.js