Joola is a data middleware for building custom analytics applications, written in NodeJS. And they just wrote a great blog post explaining how easy it is to package and distribute a NodeJS app for several distributions using Packager.io.
Also, the rationale behind their decision should be familiar to anyone who has ever wanted to distribute a NodeJS app:
However, while [installing via npm] works well for developers, it's not ideal for users for several reasons:
Every time your install Joola, it needs to download and install all the dependencies.
Some dependencies require compilation, which may fail.
Dependencies have their own life-cycle, so we might have a situation where a user is using a newer dependency package than one we've tested.
The installation process can be lengthy if we include the geo-ip dictionary for IP lookups.
npm is designed for libraries, so the user ends up with ./node_modules/joola instead of using "proper" system folders.
npm installation process does not relate to group, user, directories, permissions etc... creation, so we're quite limited in providing Joola as a service.
Users can install the package either globally or locally and we want to have uniformed configuration/logging/etc... folders.