When comparing Ender vs JSPM, the Slant community recommends Ender for most people. In the question“What are the best front-end package managers?” Ender is ranked 3rd while JSPM is ranked 5th. The most important reason people chose Ender is:
Ranked in these QuestionsQuestion Ranking
Pro Lets you bundle packages into a custom jQuery like object
Ender allows you to expose your packages into the $ namespace, which allows you to effectively create a customized jQuery. You can provide it with the selector engine, a DOM manipulation library, and an event library of your choice, as well as extend it with additional utilities. By using micro-libraries instead of jQuery, you can get smaller file sizes and more customized utility with more flexibility.
Pro Add dependencies and bundle into a package in one utility
As opposed to Browserify, Ender has the package management portion and bundler as one. Browserify is only a bundler, meaning you need to manage packages with npm as well. Using npm is good if you have frontend and backend dependencies, as you need to use npm for the backend anyway, but not as nice if you only need to create a package for the frontend.
Pro Uses the npm repository
Because Ender uses the npm repository, it gains access to its huge community and plenty of library support.
Pro Supports require through CommonJS
Ender is able to allow you to use use Node.js-style
requires, as it gets its packages from npm, which are all required to support CommonJS.
Pro Small lightweight modules
Ender encourages the use of smaller modules through a jQuery like object. Smaller projects benefit from being developed in parallel which can lead to faster release cycles for a single component, compared to a monolithic project like jQuery. You can also find more diverse functionality by using smaller projects.
By just using the components you need leads to a smaller file size and faster load speed. It also allows you to be more opinionated about which components you want to use, so you don't have to use an API you don't agree with just because it needs to provide backwards compatibility.
Pro Registry agnostic
JSPM is registry agnostic, it can pull packages from npm and github and is built in such a way it can support more.
Pro Switch between async or sync load
With a simple command you could change between load the modules async by systemjs or sync with a bundle file.
Pro Module style agnostic
Loads ES6, AMD, CommonJS and globals.
Pro Can transcompile ES6, JSX and Typescript
Pro Bundled based on imported modules without any config
Create the bundle file without config and add only the modules imported.
Pro Much faster than Webpack or Browserify
While Webpack and Browserify recompile the source code using Babel, jspm is the only packager that can load prebuild/minified code downloaded from the npm registry.
Pro Easy install packages from npm, github or any git repository
Pro Versioned package urls
It creates a packages folders which are versioned. This makes it future proof for a time where we stop bundling all the code. In the following presentation Guy Bedford calls bundling an anti-pattern.
Pro Very easy to start with
Con Utilizing a registry not made for the browser
Ender is another attempt at hijacking and using npm for downloading browser dependencies. But in doing so, it's using a registry and module specifications not made for the browser. This means that there will have to be some extra work to get them to work properly.
Con You need to be an expert to write shims
You can load any module. But that comes with the price:
you need to find or write configs to load a particular rare module.
Con Doesn't hide complexity
JSPM doesn't try to hide complexity from the user. I.e. when some issue emerges you need understand a lot to be able to patch it or create a workaround.
Con Watcher has bugs
Watching would benefit from improvements
Con Unstable API
0.17 is still in beta. 0.16 is lacking features.
Con Poor bundler performance
Bundling performance is slow, though offset by the fact that bundling is not required during development, since it can load dependencies asynchronously.