是否可以以分布式方式设置Gulp?

时间:2015-03-09 18:17:04

标签: gruntjs npm gulp

这是我想做的事情:

  • 创建具有以下功能的节点包:

    • gulpfile.js
    • 所有gulp插件,任务,配置。
  • 在Angular应用程序中安装此节点包(称为" my-gulp"从此处开始)(称为" myApp"从此处开始)通过{ {1}}依赖项。

  • package.json被复制到app root。
  • 可以从应用程序运行所有Gulp任务。

我们目前与Grunt有类似的设置(尽管没有gulpfile.js副本)。它可以很好地为我们的每个应用程序设置一个通用设置,但也有几个自定义Bower组件。只需将它作为依赖项引入它就会神奇地起作用。

到目前为止,我遇到的主要问题是,当我将my-gulp添加到myApp的依赖项中时,运行安装,my-gulp很好,但个别插件(my-gulp)还没有看到依赖关系。他们已经安装了,但运行类似Gruntfile.js的内容或其他任何内容都会显示它们丢失。

我试图在"依赖关系"下设置Gulp依赖关系(在my-gulp中)。与" devDependencies"相反,但仍然不能正常工作。


有没有人有这样的经历? 我在这里做了一些明显愚蠢的事吗?

任何帮助都很棒!

谢谢大家:)

1 个答案:

答案 0 :(得分:1)

问题是npm处理嵌套依赖项的方式。安装“my-gulp”软件包时,目录树如下所示:

| myApp
|-- node_modules
    |-- my-gulp
       |-- node_modules
           |-- gulp_dependency

正如您所看到的,“my-gulp”的依赖关系被隐藏在自己的node_modules目录中。 myApp无法访问它们。

您可以使用npm-flatten之类的内容将其移至顶级目录。否则,您将被迫将每个依赖项添加到myApp的package.json。

修改 如您的要点所示,您可以按路径而不是包名称加载依赖项。而不是复制你的gulp文件,只需从myApp中获取它,然后用相对路径加载它的依赖项:

// myApp/gulpfile.js
require('my-gulp/gulpfile.js');

// my-gulp/gulpfile.js
var gulpDep = require('./node_modules/gulp-dependency');

注意:如果您使用npm dedupe,则无效。