【问题标题】:How to fix "Task is not in your gulpfile" error when using npm link?使用 npm 链接时如何修复“任务不在您的 gulpfile 中”错误?
【发布时间】:2015-05-12 09:34:51
【问题描述】:

我们有一堆共享通用 gulp 逻辑的应用程序,所以我们制作了一个 gulp 插件,其中包含一堆自定义任务。

但是,我们希望避免为我们开发的每个应用程序安装 gulp+我们的插件(以及一半的互联网)。

理想情况下,我想这样做:

npm install -g gulp
npm install -g <our gulp plugin>

那么对于每个应用,我们只需要做:

npm link gulp
npm link <our gulp plugin>

虽然这可行,但问题是 gulp 不再识别我们的任何自定义 gulp 任务。我运行的任何 gulp 命令都会导致:

[15:16:51] Using gulpfile /workspace/my-app/gulpfile.js
[15:16:51] Task 'dev' is not in your gulpfile
[15:16:51] Please check the documentation for proper gulpfile formatting

“开发”任务在我的 gulp 插件中,为什么找不到?我的 gulpfile.js 只有这个:

var gulp = require('gulp');
var mygulpplugin = require('mygulpplugin');

当 gulp + 插件在本地安装时,完全相同的过程会起作用。任何想法为什么?

【问题讨论】:

  • 您能说明dev 任务是如何定义的吗?
  • 像这样:gulp.task('dev', ['clean'], function() { runSequence('bower', 'jsBuildDev', 'buildCSS', 'indexBuildDev'); }) ;

标签: node.js npm gulp


【解决方案1】:

想通了。在我的模块底部添加了以下行:

module.exports = gulp;

我在每个模块中的 gulpfile 如下所示:

var gulp = require('gulp'); 
var mygulpplugin = require('mygulpplugin');
gulp.tasks = mygulpplugin.tasks;

【讨论】:

  • 不,这不是错字。
  • 我认为@WilliamLepinski 的意思是您应该将. 更正为;
  • 如果你选择只公开任务,你也可以只做module.exports = gulp.tasks然后在每个模块gulp.tasks = require('mygulpplugin')
  • 奇怪的是我们必须这样做。我想知道,如果没有这样的问题,require-dir 方法是如何工作的? stackoverflow.com/questions/25518870/… 这种方法也包括其他文件的 gulp 任务,所以它应该会遇到同样的问题。
  • 2 年后,这仍然是最简单的解决方案(至少对于我的用例而言)。我没有制作任何模块,只是尝试在多个文件夹之间共享 gulp 任务,这正是我想要的。
【解决方案2】:

除了接受的答案之外,您还可以按照在 grunt 时代流行的方式进行操作,将 gulp 注入插件:

在插件中: 用以下方式包装所有内容:

module.exports = function(gulp) {
    gulp.task('foo', function () {
        ...
    })
    ...
}

并从插件文件中删除require('gulp')

在依赖于插件的 gulpfile 中,然后执行:

var gulp = require('gulp');
require('my-gulp-plugin')(gulp)

这样

  • 您可以在主 gulpfile 中拥有多个插件,因为您不会覆盖 gulp.tasks
  • 插件不必在每个插件中声明gulp package.json 依赖项(npm install 的工作量更少)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2017-05-10
    • 1970-01-01
    相关资源
    最近更新 更多