Font Awesome vs NPM
When comparing Font Awesome vs NPM, the Slant community recommends Font Awesome for most people. In the question“What are the best web design tools?” Font Awesome is ranked 6th while NPM is ranked 9th. The most important reason people chose Font Awesome is:
Font Awesome 5.1 offers 1264 free and 2068 payed icons.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro 3332 icons to choose from
Font Awesome 5.1 offers 1264 free and 2068 payed icons.
Pro Large variety of icons
There is a wide range of web-related icons to choose from. Categories include web-application, directional, transportation and brand icons. See the full list of icons here.
Pro Easy to use
Pro MIT licence for the code
Pro Font Aweseome 5 is here with over 929 icons and counting
The Pro version is very reasonable and gives you access to 2316 icons and counting. Across 3 weights! Very Nice!
Pro Screen reader compatible
Other font icons have been known to have issues with this.
Pro Designed to be used with Bootstrap
Font Awesome can be used with any framework, however it's especially easy to use with Bootstrap.
Pro Continuously updated
Pro Can employ tree shaking to not bundle unused icons
Pro IE7 support with older versions
IE7 support has been removed from Font Awesome 4.4.0. However you can still use an older version for IE7 support.
Pro Customizable icons through stacking
Icons in Font Awesome can be restyled by stacking different borders and background to modify their meaning. For example, any icon can be turned into a bullet point by stacking it on a circle, or converted into its negative by stacking a red cancel icon on top of it.
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
Pro Uncomplicated package management system
When it works...
Cons
Con Too expensive
The icons I need are in the pay plan.
Con You will never use all icons
This means you'll have a lot of useless data (unused icons) being load into your application.
Con Font Awesome slows webpages
Con Custom tasks require additional keyword 'run'
Only a few standard tasks support being executed without the run
keyword (e.g., npm start
vs npm run customtask
)
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 Passing parameters is awkward
In order to pass additional parameters to npm you must add them after --
(e.g., npm run build -- --custom='foo'
).
Con Badly documented
Less than bare minimum official documentation leaves users in the dark without taking often expensive external courses. Even the --help text has unpluggable gaps. One official source notes the documentation isn't adequate yet nothing has been done to fix this.
Con Lot of issues with authentication and random node problems
Unable to recover from common depencies conflicts consistantly. Error messages are not always helpful to debugging. Doesn't account well for users with different versions of node.
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.
Con Doesn't allow you 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.
