Is it possible to setup Gulp in a distributed fashion?

淺唱寂寞╮ 提交于 2019-12-08 11:28:01

问题


Here's what I want to do:

  • Create a node package that features the following:

    • gulpfile.js
    • All gulp plugins, tasks, configs.
  • Install this node package (referred to as "my-gulp" from here on) within an Angular app (referred to as "myApp" from here on) via package.json dependencies.

  • gulpfile.js is copied into app root.
  • All Gulp tasks can be run from app.

We currently have something similar setup with Grunt (although without the Gruntfile.js copy stuff). It works pretty well to have a common setup for each of our apps, but also several custom Bower components. Just have to bring it in as a dependency and it magically works.

The main issue I've run into so far is when I add my-gulp to myApp's dependencies, run the install, my-gulp comes in just fine, however the individual plugins (my-gulp dependencies) aren't seen. They're installed, but running something like gulp default or whatever shows them missing.

I've tried to setup Gulp dependencies (in my-gulp) under "dependencies" as opposed to "devDependencies", yet still not quite working.


Does anyone have any experience doing something like this? Am I doing something blatantly stupid here?

Any help is awesome!

Thanks, everyone :)


回答1:


The problem is the way npm handles nested dependencies. When you install your "my-gulp" package, the directory tree looks like this:

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

As you can see, the dependencies of "my-gulp" are buried inside its own node_modules directory. myApp cannot access them.

You could use something like npm-flatten to move those to the top directory. Otherwise you'll be forced to add each dependency to myApp's package.json.

Edit: As indicated in your gist, you can load the dependencies by path instead of package name. Instead of copying your gulpfile, simply require it from myApp, then load its dependencies with a relative path:

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

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

Note: This won't work if you use npm dedupe.



来源:https://stackoverflow.com/questions/28949035/is-it-possible-to-setup-gulp-in-a-distributed-fashion

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!