lukeed / taskr

A fast, concurrency-focused task automation tool.
MIT License
2.53k stars 74 forks source link

Re-add fly.filter to support un-updated fly-plugins #260

Closed Swizz closed 7 years ago

Swizz commented 7 years ago

I know, this is a big loopback. But numerous plugins are always still deprecated and could cut the Fly's karma. (I wanted to move my old build config to Fly and went pissed off)

This addition were written with old source, docs and changelog in mind and manually tried against : fly-pug, fly-buble, fly-postcss, fly-csso, and fly-coffee.

This Pull request is opened for discussion. I will work on clean tests, if the discussion be favorable.

lukeed commented 7 years ago

Hi again @Swizz,

The fly.filter was intentionally dropped because the entire plugin system is fundamentally different. The old fly.filter accepted three variations of plugins, none of which would work consistently in the new environment.

Take, for example, the fly-karma package you're trying to use. There's no way to consistently set a every: true property on old filters. Some will require true and others will require false. In your setup, it defaults to true, so the Karma tests will be run for every file matched in the glob....meaning if you have 10 test files, the Karma suite will be re-run 10 times.

Then, even if you change this to work specifically for fly-karma, there's zero guarantee that all the others will work. There was also a defer method that many plugins were based on. That also no longer exists.

Fly 2.0 is filled with many breaking changes. This is one of them.

The best thing to do is to open a PR on the outdated plugins & encourage authors to update. I've had to do this myself many times.

If worse comes to worse, just fork the repo & install your branch via NPM:

$ npm install --save-dev swizz/fly-karma

Thank you very much for the PR 😄 Unfortunately, it's just not the best solution. Plugins need to update anyway.

You may ping me on open PRs for updating plugins. I'll do what I can to help get notice.

hzlmn commented 7 years ago

@lukeed What do you think about transfer core plugins like buble or coffee to Fly repo ?

lukeed commented 7 years ago

I'm working on fly-buble here. Been waiting a while.

Pretty sure fly-coffee is already part of Fly org?

Swizz commented 7 years ago

Adopting fly is going to be a tirelessly fight :crossed_swords:

But I am ready, Fly match lot of my thoughts about "build tools"/"tasks runner". :+1:

Ask me If you want some help for the rewrite of most used plugins.

lukeed commented 7 years ago

@Swizz It's worth it 😉

The plugins I use are updated & working. The best thing you could do is find the plugins you would like to use & try to patch them. It's impossible for me to find everything myself.

hzlmn commented 7 years ago

@lukeed Yep, but what i actually meant is to transfer all most used plugins to fly org. Because most of them are not actively maintained like you mentioned buble for example and we need to provide good supported alternative for end user.

lukeed commented 7 years ago

@hzlmn Yeah. The trick is finding these authors & getting them to transfer or at least be actively engaged in maintaining the plugin.

I've been waiting on fly-browserify for months now, and fly-buble for almost a month. Those are the only 2 I'm aware of (and that I use) that aren't updated.

Have to remember, too, that Fly practically went a year without being updated. So can't really blame these authors for abandoning their plugins. Now we just need to let them know we're alive & kicking again!

Swizz commented 7 years ago

@lukeed Yeah got it. I will start around my stack first, and grow near the most used things

@hzlmn This is what I was talking about. Fly need better community support around plugins to grow up

hzlmn commented 7 years ago

@Swizz, @lukeed yep, we currently need better docs and internalization for popularization of fly.

Btw, when I showed fly on my work, we fully migrate from gulp to it.

lukeed commented 7 years ago

@hzlmn Awesome! What kind of improvements did you get? Did you track memory/speed from before vs after?

And what needs to be improved on the Docs? From what I hear, they're really descriptive & well-covered.

jorgebucaran commented 7 years ago

@hzlmn Luke really knocked it out of the park with the new docs, nothing like what we used to have. I'm not sure if we need more docs, instead a gitbook.com with a few practical tutorials would be more valuable IMO.

Swizz commented 7 years ago

@lukeed @hzlmn So.. what about the use of npm-scope ?

MostJS use them to ensure end user that package are officially supported by the core maintainers. And scope will permit you to re-use name if actual authors does not answer to your calls.

lukeed commented 7 years ago

Thanks @jbucaran

@Swizz I had major issues while scoping my fork fly-browserify. For whatever reason, scopes are sort of notoriously bad at actually working for everybody.

$ npm install @lukeed/fly-browserify

# almost exactly the same as

$ npm install lukeed/fly-browserify
# ^^ but this works everywhere everytime
hzlmn commented 7 years ago

@jbucaran , @lukeed Yep it totally awesome and Luke done awesome work, but there are some points from my team members, for example, not everyone fully understand where "magic" plugin methods like lint comes from, we need better description about fly booting and a bit fly internals. But it's IMO

PS. and also gitbook or little screencast seems like a good idea, isn't it?

jorgebucaran commented 7 years ago

@hzlmn Gotcha. Sure. I think that, too, belongs to a user guide or handbook. The docs are already of considerable length.

lukeed commented 7 years ago

Yea, they're as long as they should be imo. But, do you mean how a plugin's name becomes a method? I could revisit that section.

And what more needs to be said of the internals? I kinda feel like the point of Fly is that you don't have to worry about the internals at all. They're exposed when & only when their contents are needed.

jorgebucaran commented 7 years ago

Perhaps we should continue this discussion in another issue, and address @Swizz PR here. Looks like it won't be merged?

Swizz commented 7 years ago

@lukeed But except if I missed something

$ npm install lukeed/fly-browserify
# use the github repository from the master branch

$ npm install @lukeed/fly-browserify
# use the npm published package
lukeed commented 7 years ago

@Swizz Correct. But @lukeed/fly-browserify doesn't work 100% of the time. I'm not sure why, but I've had install issues with scoped packages many times; and I hear the same from others every so often.

lukeed commented 7 years ago

@jbucaran I still need NPM access to the existing Fly org plugins. Just updated fly-coffee to 1.0 but can't publish it. cc @hzlmn

hzlmn commented 7 years ago

@lukeed I think it is a problem with current regex for matching plugins . I mean for scoped packages

lukeed commented 7 years ago

Yeah, that'll block it right now. But I meant that I couldn't actually install plugins. NPM fails to find the package && Yarn definitely can't (last I checked).

Swizz commented 7 years ago

By using Cyclejs and Mostjs, I use scoped npm package most of the time. And never noticed any issue. I will investigate.

lukeed commented 7 years ago

Now you can actually test it out 😄 https://github.com/flyjs/fly/releases/tag/v2.0.5