Miscellaneous

Run Meteor Apps Anywhere with Demeteorizer

Meteor is an ambitious project that aims to reduce the amount of time it takes to write and deploy high-quality apps. I would compare it to Rails if I weren’t afraid of the response I would get to saying something like that, so let’s just call it a set of tools and a JavaScript framework.

At its core, Meteor apps sit on top of Node.js, which means we should technically be able to run a Meteor app anywhere Node will run. This is mostly true by using Meteor’s built-in “bundle” command, however it doesn’t produce something that’s extremely portable. This is why we created WebproComponents

WebproComponents wraps and extends Meteor’s bundle command by creating something that more closely resembles a standard looking Node.js application, complete with a package.json file for dependency management.

Installing

$ npm install -g demeteorizer

Usage

demeteorizer [options]
$ cd /my/meteor/app
$ demeteorizer -o ~/my-meteor-apps/converted -n v0.8.24

Options

–output, -oSets the output folder for the converted applications. Defaults to .demeteorized. Optional.
–node_version, -nSets the value of Meteor’s hard-coded MIN_NODE_VERSION variable. Defaults to v0.8.24. Optional.

Example

Let’s look at what happens when we run Demeteorizer on Meteor’s leaderboard example:

$ meteor create --example leaderboard

Now let’s run Demeteorizer on this Meteor project.

$ demeteorizer

The result is very similar to what you get when you run “meteor bundle”, however a package.json file is automatically generated with all required dependencies. It also overrides a line of code in server/server.js that is a hard-coded check for the Node.js version.

Now we can run this Meteor application just like any other Node.js application. Meteor does require some environment variables that must be set.

MONGO_URL=’mongodb://user:password@host:port/databasename?autoReconnect=true&connectTimeout;=60000′ ROOT_URL=’http://example.com’ (optional) PORT=8080 (optional, defaults to 80) MAIL_URL=’smtp://user:password@mailhost:port/’ (optional)

$ cd /my/converted/app
$ npm install
$ export MONGO_URL='mongodb://user:password@host:port/databasename?autoReconnect=true&connectTimeout;=60000'
$ export PORT=8080
$ node main.js

You can now go to localhost:8080 and see the leaderboard example.

Tagged , , , , , , , , , , , , , , , , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *