hoffi/gulp-msbuild

gulp has blacklisted gulp-msbuild

Closed this issue · 5 comments

I really don't know why this was done, but it's explicitly in their source code of blacklisted items.
https://github.com/gulpjs/plugins/blob/master/src/blackList.json

If you run gulp --verify, it will display the following:

Verifying plugins in package.json
Blacklisted plugins found in this project:
gulp-msbuild: not a gulp plugin

(Gulp 4.0.0, Gulp-CLI 2.0.1)

hoffi commented

I think it is because of this reason described here:

Does not fit within the gulp paradigm

Because the Gulp Guidelines say:

Wrapping every possible thing just for the sake of wrapping it will pollute the ecosystem with low quality plugins that don't make sense within the gulp paradigm.

Which i would say applies here, as it only wraps the msbuild command line tool.
Also this:

gulp plugins are for file-based operations! If you find yourself shoehorning a complex process into streams just make a normal node module instead.

So i think this cannot be fixed.

Just adding my 2c here, because, well, FRUSTRATION:

I've used gulp as a task orchestrator, specifically around build, most specifically around .net build, test, packaging, deployment, but also for js-based stuff.

If the reasons outlined above are why gulp-msbuild is blacklisted, then that's (imo) rather short-sighted. Actually, I have some more choice words I could use to describe the decision, but let's leave it there.

This is not something which is trivial to rewrite as a plain-old-node-module because it takes advantage of gulp.src, which has intelligence for finding zero or more matching paths and pipes that result into something else which does the work -- like gulp-msbuild. gulp-dotnet-cli provides similar functionality for dotnet core, and, since vs2019 has moved msbuild (again), and since I find that I need one build system which can deal with the prior two (msbuild and dotnet) as well as the (deprecated, but still in-use) xbuild, I find that I'm in a place where I'm using all three, but can't rely on gulp-msbuild for vs2019 detection (and I can't blame the author -- I understand that things move / change, though it would be nice if I could fork and publish back to gulp-msbuild, but that's a future problem).

Suffice to say that:

  1. this plugin is useful
  2. it's not far out of scope for what an orchestration system could need to do
  3. it's in daily use at several places where I've deployed
  4. I need to extend for vs2019 after struggling to find a vs2017 build tools installer

Comments?

hoffi commented

Hey @fluffynuts,

yes i can understand your points, as these are the reasons i created this plugin.
For the blacklisting reason: I do think that this plugin does not follow the gulp guidelines. However i don't really understand why these Guidelines are the way they are.
Yes this plugin wraps a complex process, has many configuration options that cause the plugin to do different things (compiling, deploying, etc.) and so on. But this has to be discussed with the gulp team :)

As i have mentioned in the Readme, feel free to fork and work on this plugin. And if you like to i can also add a link to you in the Readme as the new maintainer and give you publish rights.

Happy that you find it useful and are using it 😃

@hoffi apologies for the delay in getting back to you. I most certainly will fork and update for vs2019 (since that's something which is pervading more and more in my environment, and I can't just keep on uninstalling it ^_^). I'll get back to you when there's reasonable fixes so you can review and decide if you still want to pass the torch (:

hoffi commented

Yeah no problem :)