Generalize the concept of plateform target
mquandalle opened this issue · 6 comments
With the Meteor command line tool we can transform a single directory of source code in multiple target applications, by default a client web application and a server nodejs application. Since Meteor 0.9.2 it's also possible to target cordova Android and cordova iOS platforms. Some people also use meteor only in the client without any server (they can find another way to distribute their application, like the chrome web store).
The idea here is to make this notion of plateform target generic enough so we could define new ones (a browser extension, a windows phone app, a command line tool, a sandstorm app, etc.) and also choose the one we want (if I create a browser extension using meteor, I might don't need a web client or a nodejs server).
This is probably a lot of work, but I think it's a good think to keep in mind (for instance for the design of the new package.js
or whatever we call it). The internal tools of meteor also have some concepts like arch
that will be useful for this goal.
I dont actually think its that hard to add platforms - But it would have been great it MDG had made platforms as plugins for the build tool keeping it nice and clean (at the moment its very much "make it work, make it fast" its not modular)
I guess thats a problem with the build tool in general - its not cleanly architected to be extendable, yet?
I would love to be able to create browser extensions with Meteor.
Does chrome extensions support sync localstorage? (if not we get problems with Accounts)
I just want to leave here a list of platforms people are targeting:
- nodejs server — officially supported
- web browser — officially supported with the node server, client only: https://github.com/mondora/asteroid, http://frozeman.de/blog/2015/05/meteor-build-client/
- cordova on iOs and Android — officially supported
- desktop native with electron — https://sircharleswatson.github.io/2015/04/30/Electrometeor-Build-Desktop-Applications-With-Electron-Meteor.html
- browser extension — https://github.com/TristanToye/meteor-extension
- command line utility — https://github.com/practicalmeteor/meteor-mcli
- ARM v6/7 — http://meteor-universal.tumblr.com/
- native iOs — https://github.com/hharnisc/react-native-meteor-websocket-polyfill
- Apple watch — https://github.com/percolatestudio/amble
- sandstorm — https://github.com/sandstorm-io/meteor-spk
- ethereum — https://github.com/ethereum/web3.js
- execute tests in phantomjs — https://github.com/practicalmeteor/spacejam
All these tools have to rely on external tool (mostly distributed via NPM) to build their application from the common source code.
Is it resolved? :)
Nope, but I should move it to the main meteor repo. Let's reopen until that.