After you create a new meteor project with meteor create test in your cmd or Terminal,
the ‘test’ project should have a “.meteor” folder which contains a file named “packages”.
This file has all the list of packages pre-installed by default.
Besides, you do not have to worry about duplicate installations, the built-in package manager knows if you already have the same package installed.
Thank you for that information. What I was thinking, more broadly speaking, was what did I get when I did an:
curl httxp://install.meteor.com / | sh (link changed to disable it).
I found a link that shows the technology installed here, but was wondering if there was more to Meteor than what was listed on the page. For example, is Meteor installing Node, JADE, Angular, EmberJS, etc when it is installed, or do I have to perform an NPM install command to get those. If so, do I have to prefix it with “meteor”, or do I simply install the package via NPM and then add the dependencies to my package.json?
Okay i think I got what you now. Here is a list of packages Meteor is shipped with.
But coming to second part of your question; NPM install package name
seems to install the package but I do not think it is encouraged.
I think the answer you’re looking for is that when you are developing a Meteor web app, all the tooling and infrastructure is installed for you, including nodejs and MongoDB. (If you are developing mobile apps with Cordova, you will need to install some components yourself).
However, when you deploy your app into production, you will need to provide some basic infrastructure components (like nodejs and MongoDB). There are some deployment tools that will do that for you (for example, mup).
Yes, as far as tooling, I do get that Meteor is handling the infrastructure. However, I wasn’t sure what exactly was included in that infrastructure. Am I simply getting a pre-baked file structure, with a few dependencies sprinkled in? Or is meteor installing the entire framework (MEAN Stack, emverJS, react, etc) and leaving it up to me to decide what I need?
The problem I don’t want to have is for example I installed Meteor, but want to use a different version of Mongo, or Angular. Who manages that? Do I simply install/update it via npm, and change the dependencies in the packages.json file, or do I have to do something with meteor to get it working? This is where my limited knowledge of the framework comes into play
Ultimately, I think the github repo link provided is closer to solving my problem, but it doesn’t say if those are available packages I can install, or if they are already installed for me and I just need to pick and choose what to use. If there is something that I need which isn’t in the infrastructure, what do I do? I think that is where mup comes in. Is that correct?
I see this question evolving from my original ask, but perhaps it is all interconnected. Thanks again for helping me through this!
The standard development install process (curl …) really just installs little more than I indicated (nodejs, npm, MongoDB and build tooling - the meteor command).
When you come to write your app you start with an (almost) blank canvas (the bare minimum packages to build a fully working basic app) and add (or remove) packages as needed. Those packages are downloaded for you into that particular app when you add them (or deleted if you remove them). Many of the packages listed on that github link are internal and you will probably never refer to them explicitly.
However, if you want to use, say react or angular instead of blaze, you just add the required package (btw I don’t know of any Ember integrations). In most cases you never need to use the npm command.
If you want to use a different version of, say, angular than the default, you could fork the package as a local package and make whatever changes were needed.
Generally speaking, if you’re not too familiar with Meteor I would say that it works well if you don’t tinker with stuff. Similarly, if you want to tinker (and there’s a lot of scope for developing new functionality) it’s probably best to become familiar!
I agree with becoming familiar, it might just take some time! So if Meteor just installs a few items as part of the infrastructure, what would be the benefit of using it to develop as opposed to just installing everything via npm, and linking them as dependencies?
My goal is to create a cordova app on meteor, but I am not sure if it is worth it at this point to use Meteor vs a vanilla install of all the tools. Would you care to share any insight to that? I was hoping that everything could be self contained to Meteor, and then just push it to heroku and use it from there, but even that has it’s own headaches. One of which I found is that if you use Mongolabs, their version is not compatible with Meteor Mongo (but that is a different story I suppose).
The idea is that you can be more productive by using packages built for a specific platform rather than wiring them together yourself. Meteor also comes with a standard data stack that caches data on the client and enables you to use it without having to make REST API calls all the time, and a build system that makes it easier to transpile languages, build Cordova apps, etc.
We’ve taken great care to make sure Meteor ships with everything you need - so you don’t have to manually install Mongo, Node, Cordova, or anything else. Whenever there is more stuff that needs to be downloaded, the command line tool does it for you - for example when you want to do Android development it will link you to the appropriate guide for your system.