Meteor vs Webpack vs Parcel
Tags: meteor, parcel, webpack, typescript
Published: 2019-07-05 14:35:07

Yeah, that's right, I said [Meteor](https://www.meteor.com/)!

Meteor is often overlooked. It is highly underrated for reasons I can not explain. In fact, this is only the 10th post tagged `meteor` on dev.to!

## Meteor is a fantastic piece of software.

Ben Newman -- one of the people who currently maintain Meteor -- worked at Facebook before Meteor Development Group. At Facebook, he wrote Regenerator. Regenerator is a tool that Babel uses under the hood for transpiled `async functions`.

_The chances are that you wrote `async function`s at some point, and they were handled under the hood by [Ben Newman's Regenerator!](https://github.com/facebook/regenerator)_. Some of you may still transpile `async function`s for older browsers and are thus still using Regenerator today.

This guy Ben works on Meteor now, and [his code is f***ing clean](https://github.com/benjamn); something to be inspired by.

## Meteor vs [Webpack](https://webpack.js.org/)? Meteor vs [Parcel](https://parceljs.org/)? What?

You may think of Meteor as an Application Framework.

Well, you would be sort of right.

Meteor is a _collection of libraries and tools_, that when used together (for example in the default application that the CLI tool scaffolds for you) can be considered an application framework.

_But you don't have to use all the pieces all at once._

For some odd reason, people think using Meteor is all or nothing. Maybe this is why it is underrated, and causing people to waste their time re-implementing all the awesome things Meteor can already do for you.

This article could be called "Meteor vs [Ember](https://emberjs.com/) vs [Angular](https://angular.io/)", or "Meteor vs [MEAN](http://meanjs.org/)", or "Meteor Blaze vs [React](https://reactjs.org/) vs [Vue](https://vuejs.org/)", or "Meteor vs [Express](https://expressjs.com/) vs [Koa.js](https://koajs.com)", or "Meteor vs [Passport.js](http://www.passportjs.org/) vs [Permit](https://github.com/ianstormtaylor/permit)", or "Meteor vs [Ionic Framework](https://ionicframework.com/)".

Did you know, that in Meteor's core there is an amazing build system and bundler capable of building your JavaScript/TypeScript/CoffeeScript/Vue/JSX/Angular/Sass/Less/Whatever not just for web (old targets and new targets), but _also for iOS and for Android as mobile applications_?

You could use Meteor just for the purpose of bundling and shipping your code with possibly the most sophisticated web-based build system and bundler in existence, and save yourself _a lot_ of time.

This fact alone is something you should consider!

## Okay, so what are the differences?

[Meteor's Build System](https://guide.meteor.com/build-tool.html) is, out of the box, similar to Parcel in the sense that you hit the ground running with default settings and no fuss.

Meteor's build system is also highly pluggable like Webpack. It is easy to make Meteor ["build plugins"](https://docs.meteor.com/api/packagejs.html#build-plugin-api) to handle any files types (equivalent to "loaders" in Webpack).

### Let me tell you what Meteor has that no other bundler has:

Meteor has a space-age system for building your code for old and new targets, and _automatically serving specific bundles to the runtime environment based on what it detects the environment to be_, with zero config required!

Meteor allows you to publish your web-based app to iOS or Android. You only need a few simple commands to add build targets:

```sh
meteor add-platform android
meteor add-platform ios
```

After installing prerequisites for building mobile apps in your OS (XCode on macOS, or Android Studio on any OS), then you can _simply run your app in a mobile emulator or actual device_ with simple commands:

```sh
meteor run ios # runs in an iOS emulator
meteor run ios-device # runs on your connected iOS device
meteor run android # runs in an Android emulator
meteor run android-device # runs in your connected Android device
meteor run ios android-device # run on multiple targets
```

You do not get this from any other bundler! 🚀

Honestly, I encourage you to take a look. All aspects of Meteor (the not-framework _collection of tools_), including the [Build System](https://guide.meteor.com/build-tool.html), are documented.

---

That's all I'll write here. If you have any questions, I'm happy to try and answer them! :)

To learn more about "Meteor vs Webpack vs Parcel", I recommend reading an article on [Webpack vs Parcel](https://medium.com/@ibrahimbutt/if-youve-ever-configured-webpack-parcel-will-blow-your-mind-b615468cee78) (and for that matter looking up "Webpack vs Browserify" and "Webpack vs Rollup" if you don't already know), and checking out [Meteor's Build System](https://guide.meteor.com/build-tool.html).

---

Come to [Meteor Night on Tuesday July 9th](https://www.meetup.com/Meteor-SFBay/events/262463643/) to hear Ben Newman and others discuss Meteor.