是否可以以分布式方式设置 Gulp?
Is it possible to setup Gulp in a distributed fashion?
这是我想要做的:
创建具有以下特点的节点包:
gulpfile.js
- 所有 gulp 插件、任务、配置。
通过 Angular 应用程序(从此处称为 "myApp")安装此节点包(从此处称为 "my-gulp")package.json
依赖关系。
gulpfile.js
复制到应用根目录。
- 所有 Gulp 任务都可以 运行 来自应用程序。
我们目前有一些与 G运行t 类似的设置(尽管没有 Gruntfile.js
复制内容)。为我们的每个应用程序和几个自定义 Bower 组件设置一个通用设置非常有效。只需将它作为依赖项引入,它就会神奇地工作。
到目前为止,我 运行 遇到的主要问题是当我将 my-gulp 添加到 myApp 的依赖项时,运行 安装,my-gulp 出现很好,但是看不到各个插件(my-gulp 依赖项)。它们已安装,但 运行ning 类似 gulp default
或任何显示它们丢失的东西。
我已经尝试在 "dependencies" 下设置 Gulp 依赖项(在 my-gulp 中)而不是 "devDependencies",但仍然无法正常工作。
有没有人有过这样的经历?
我是不是在做什么蠢事?
任何帮助都很棒!
谢谢大家:)
问题在于 npm 处理嵌套依赖项的方式。安装 "my-gulp" 软件包时,目录树如下所示:
| myApp
|-- node_modules
|-- my-gulp
|-- node_modules
|-- gulp_dependency
如您所见,"my-gulp" 的依赖项被埋在它自己的 node_modules
目录中。 myApp
无法访问它们。
您可以使用 npm-flatten 之类的方法将它们移动到顶级目录。否则,您将被迫将每个依赖项添加到 myApp
的 package.json。
编辑:
如要点所示,您可以按路径而不是包名称加载依赖项。不要复制你的 gulpfile,只需从 myApp 中获取它,然后使用相对路径加载它的依赖项:
// myApp/gulpfile.js
require('my-gulp/gulpfile.js');
// my-gulp/gulpfile.js
var gulpDep = require('./node_modules/gulp-dependency');
注意:如果您使用 npm dedupe
,这将不起作用。
这是我想要做的:
创建具有以下特点的节点包:
gulpfile.js
- 所有 gulp 插件、任务、配置。
通过 Angular 应用程序(从此处称为 "myApp")安装此节点包(从此处称为 "my-gulp")
package.json
依赖关系。gulpfile.js
复制到应用根目录。- 所有 Gulp 任务都可以 运行 来自应用程序。
我们目前有一些与 G运行t 类似的设置(尽管没有 Gruntfile.js
复制内容)。为我们的每个应用程序和几个自定义 Bower 组件设置一个通用设置非常有效。只需将它作为依赖项引入,它就会神奇地工作。
到目前为止,我 运行 遇到的主要问题是当我将 my-gulp 添加到 myApp 的依赖项时,运行 安装,my-gulp 出现很好,但是看不到各个插件(my-gulp 依赖项)。它们已安装,但 运行ning 类似 gulp default
或任何显示它们丢失的东西。
我已经尝试在 "dependencies" 下设置 Gulp 依赖项(在 my-gulp 中)而不是 "devDependencies",但仍然无法正常工作。
有没有人有过这样的经历? 我是不是在做什么蠢事?
任何帮助都很棒!
谢谢大家:)
问题在于 npm 处理嵌套依赖项的方式。安装 "my-gulp" 软件包时,目录树如下所示:
| myApp
|-- node_modules
|-- my-gulp
|-- node_modules
|-- gulp_dependency
如您所见,"my-gulp" 的依赖项被埋在它自己的 node_modules
目录中。 myApp
无法访问它们。
您可以使用 npm-flatten 之类的方法将它们移动到顶级目录。否则,您将被迫将每个依赖项添加到 myApp
的 package.json。
编辑: 如要点所示,您可以按路径而不是包名称加载依赖项。不要复制你的 gulpfile,只需从 myApp 中获取它,然后使用相对路径加载它的依赖项:
// myApp/gulpfile.js
require('my-gulp/gulpfile.js');
// my-gulp/gulpfile.js
var gulpDep = require('./node_modules/gulp-dependency');
注意:如果您使用 npm dedupe
,这将不起作用。