When comparing Fly vs NPM, the Slant community recommends NPM for most people. In the question“What are the best node.js build systems / task runners?”NPM is ranked 2nd while Fly is ranked 11th. The most important reason people chose NPM is:

Pro

Support for concurrent tasks

Pro

Smaller build files, with same benefits of a huge one

If it's a fly- plugin you don't have to require it like you do with every other build tool. Theres no need for wrapper functions for each plugin (aka .pipe()). If it's a fly- plugin you just call it directly. The build file get's to the point quickly without adding all the extra fluff. This makes your build file very clean and easy to read!

Pro

Very easy to setup

Fly is easy to setup, there are no caveats that you have to know since everything is very intuitive. Also with fly you don't have to repeat your self several times. You just define out what you want and that's it. If it's a fly plugin it will be required automatically without the need for an additional plugin.

Pro

Fly plugins are required automatically

If you want to use a Fly plugin in a flyfile, it's automatically required without needing an additional plugin.

Pro

Can run subtasks inside a task

Fly supports running multiple subtasks in a single task without having to create a new one.

Pro

Compatible with any CLI

NPM is compatible with any CLI the developer wants to use.

Pro

Plenty of helpful NPM modules/plugins

NPM has a strong community that has developed plenty of libraries and plugins that are useful to developers.

Pro

Very concise configuration

NPM scripts require fewer lines of code to run a given task. This is true even when it's for running build processes. Using Unix pipes lots of tasks can be reduced to one-liners.

Pro

Does not need any wrapper modules

With other task runners, you need to install wrapper modules for tools you may already have installed. When using NPM that's not necessary, to use the tools you need, just install them directly through NPM.

Pro

Part of node.js distribution

Pro

You're most likely using NPM already

Cons

Con

Limited number of plugins

There's still a very limited number of Fly plugins. This can contribute negatively in development time and energies spent to make a plugin to complete a task for which there's none yet.

Con

Doesn't allow to create build process with complicated logic on its own

In complex heterogeneous app you will quickly migrate to gulp, webpack or whatever leaving to NPM only simple task running responsibility.

Con

Not a build system, only a task runner

It is supposed to be used for running gulp, webpack or whatever. But it is not supposed to be used as a build system.

Con

Does not run well with Windows

Since a lot of projects that use NPM as a build tool most of the time make use of Bash scripts as well. This means that open source projects that run the command npm run may run into issues when used in a Windows environment.