How do I deploy Node.js applications as a single executable file?

Golo Roden picture Golo Roden · Jan 14, 2013 · Viewed 121.3k times · Source

Supposed I have written a Node.js application, and I now would like to distribute it. Of course, I want to make it easy for the user, hence I do not want him to install Node.js, run npm install and then manually type node app.js.

What I'd prefer was a single executable file, e.g. an .exe file on Windows.

How could I approach this?

I am aware of this thread, anyway this is only about Windows. How could I achieve this in a platform-independent manner? Any ideas? Best practices? ...?

The perfect solution was a "compiler" I can give a source folder to. The source folder contains the app itself in various .js files, the node_modules folder and some metadata, such as the package.json. The output should be binaries for various platforms, such as Windows, OS X and Linux.

Oh, and what's important: I do not want to make any changes to the source code, so calls to require with relative paths should still work, even if this relative path is now inside the packaged app.

Any ideas?

PS: I do not want the user to install Node.js independently, it should be included inside the executable as well.

Answer

Golo Roden picture Golo Roden · Aug 13, 2013

Meanwhile I have found the (for me) perfect solution: nexe, which creates a single executable from a Node.js application including all of its modules.

It's the next best thing to an ideal solution.