这是我想做的事情:
创建具有以下功能的节点包:
gulpfile.js
在Angular应用程序中安装此节点包(称为" my-gulp"从此处开始)(称为" myApp"从此处开始)通过{ {1}}依赖项。
package.json
被复制到app root。我们目前与Grunt有类似的设置(尽管没有gulpfile.js
副本)。它可以很好地为我们的每个应用程序设置一个通用设置,但也有几个自定义Bower组件。只需将它作为依赖项引入它就会神奇地起作用。
到目前为止,我遇到的主要问题是,当我将my-gulp添加到myApp的依赖项中时,运行安装,my-gulp很好,但个别插件(my-gulp)还没有看到依赖关系。他们已经安装了,但运行类似Gruntfile.js
的内容或其他任何内容都会显示它们丢失。
我试图在"依赖关系"下设置Gulp依赖关系(在my-gulp中)。与" devDependencies"相反,但仍然不能正常工作。
有没有人有这样的经历? 我在这里做了一些明显愚蠢的事吗?
任何帮助都很棒!
谢谢大家:)
答案 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
,则无效。