As discussed: having different versions of platforms and plugins is a recipe for disaster. The design choice of version locking is deliberate to avoid that. I'm going to ignore the ramble about grunt, etc. I'm not advocating for that nor am I interested in javascript build library fashion. Those things are not problems we seek to solve here.
Also: this is not talk. Its building consensus to *continue* the work being done into a direction that everyone feels good about. The alternative is patchbombing and a massive delete of google employee commits which is probably not productive. On Wed, Jun 4, 2014 at 2:16 PM, Andrew Grieve <[email protected]> wrote: > Brian's and Carlos' examples have a very important difference: > > Brian's: platforms are dependencies of CLI > Carlos': platforms are siblings of CLI in top-level package.json > > With Carlos', the user can easily control versions of the platforms, which > is great. You could just as easily put plugins in there now that npm > supports multiple registries as well. > > I don't think you'd need CLI at all with this setup. Just use plugman & > grunt & recreate your project on every build. I think it's a nice workflow, > but I'm afraid that dramatically changing out documented workflow again so > soon would be an unwelcome change. I also think it'd be a good amount of > work to make our tools smart enough to work alongside npm in a way that > isn't confusing (e.g. if we're recreating every time, we'll need to speed > it up a lot. If not, then you need to tell it when dependencies change). > > My main goal for now is to get to where we can release platforms > independently, but I'm curious if this is all talk or is anyone intending > to do some real exploration in this area? > > > > > > > > On Wed, Jun 4, 2014 at 4:55 PM, Brian LeRoux <[email protected]> wrote: > > > Here is an example using our current situation. Cordova is versioned [1] > > and the CLI calls are abstracted as npm scripts [2]. If we change to the > > proposed 'versioning platforms using npm' we don't have to download > > platforms, cache them or perform any custom dependency logic. > > > > We will then be well on the path to making the CLI *really* dumb and it > > will only pass calls down to the lib installed in node_modules. > > > > HTH > > > > [1] > > > > > https://github.com/brianleroux/cordova-example-using-npm/blob/master/package.json#L13 > > [2] > > > > > https://github.com/brianleroux/cordova-example-using-npm/blob/master/package.json#L8 > > > > > > On Wed, Jun 4, 2014 at 1:38 PM, Carlos Santana <[email protected]> > > wrote: > > > > > Michal > > > The grunt plugin and yeoman generator I implemented a long ago. So > it's > > > implemented on top of what cordova provides. > > > > > > I'm confuse, this is the point I was trying to get that there is "user > > > space" and "cordova platform space", Doing a plugin for yeoman, gulp , > > > grunt, or the next thing is user space. > > > > > > cordova as a platform should be using flexbile and clear on what is > > doing, > > > so "user space" can customize on top of it. > > > > > > > > > On Wed, Jun 4, 2014 at 12:44 PM, Terence M. Bandoian < > [email protected]> > > > wrote: > > > > > > > This is helpful. Thank you for posting this, Carlos. I have a > couple > > of > > > > related questions. > > > > > > > > The config files I've used iOS and Android are significantly > different > > > for > > > > the same project. Is combining everything for all platforms into one > > > > config.xml recommended? > > > > > > > > What cordova commands cause the www folder to be copied to a > platforms > > > > directory? My workflow for iOS/Xcode is typically (similar for > > > > Android/Eclipse): > > > > > > > > - add/build iOS platform using cordova > > > > - edit, build, test iteratively in Xcode using platforms/ios > directory > > > > > > > > Xcode doesn't copy from the outer www directory when it builds. > Should > > > it? > > > > All of the files added to the Xcode project are in the platforms/ios > > > > directory. > > > > > > > > -Terence > > > > > > > > > > > > > > > > On 6/4/2014 10:10 AM, Carlos Santana wrote: > > > > > > > >> I think regardless how much sugar we use to make it easy, I think > the > > > >> under > > > >> the hood foundation/architecture should be something like: > > > >> > > > >> LocalProject/www/ > > > >> LocalProject/config.xml > > > >> LocalProject/package.json > > > >> LocalProject/node_module/.bin/cordova > > > >> > > > >> config.xml (manages the cordova app) > > > >> package.json (manages the cordova project) > > > >> > > > >> pacakge.json (will specify all dependencies and npm will take care > of > > > >> fulfill them) > > > >> { > > > >> cordova: ">3.6", > > > >> cordova-ios: "3.6.1", > > > >> cordova-android: "3.6.2", > > > >> cordova-plugin-device: "*", > > > >> cordova-plugin-file: "^0.2.4" > > > >> } > > > >> npm install will take care of making everything available locally. > > > >> > > > >> I know that we don't have plugins in npm, but something to think > > about, > > > in > > > >> terms of just a secondary repository to download the files and > > caching. > > > >> > > > >> a global @cordova-cli, can be available like grunt-cli, to look > first > > in > > > >> local directory (i.e. findup) > > > >> > > > >> like someone mentioned npm installs hooks can run the "cordova > > platform > > > >> add" > > > >> > > > >> this way minimal set of files can be put a dev repo, and reproduce > by > > > >> another developer very easy both getting same resulting project. > > > >> > > > >> git clone https://github.com/myuser/cordovapp && cd cordovapp && > npm > > > >> install && cordova run android > > > >> > > > >> > > > >> > > > >> On Tue, Jun 3, 2014 at 6:35 PM, Terence M. Bandoian < > > [email protected]> > > > >> wrote: > > > >> > > > >> I still consider myself a relative newcomer to Cordova but, from a > > > >>> development standpoint, it would be easiest for me if I could > manage > > > each > > > >>> platform of a project independently - including plugins. Creating > a > > > >>> parallel project to make sure that the plugins and Cordova base > don't > > > >>> change for one platform while I work on another isn't ideal but it > > > isn't > > > >>> completely unmanageable either. It just makes the workflow a > little > > > more > > > >>> complex. > > > >>> > > > >>> -Terence > > > >>> > > > >>> > > > >>> > > > >>> On 6/3/2014 7:12 PM, Michal Mocny wrote: > > > >>> > > > >>> We don't do platform-plugin version matching *at all* today. > > Everyone > > > >>>> uses > > > >>>> the latest plugins and any platform version they want, and its > been > > > >>>> "fine". > > > >>>> So using different platform versions isn't as hard as you guys > > are > > > >>>> making > > > >>>> it out to be. > > > >>>> > > > >>>> Still, I've already said its not necessarily a complexity that > needs > > > to > > > >>>> be > > > >>>> addressed in a world where you can create multiple projects and > use > > > >>>> --link-to or whatever, so long as your platforms aren't installed > > > >>>> globally. > > > >>>> > > > >>>> > > > >>>> Anyway, thanks for posting your instructions Brian/Tommy. As I > > > >>>> mentioned > > > >>>> it would be, thats a different workflow than we have now. I'm > going > > > to > > > >>>> sleep on it before I comment, but it certainly isn't just like > "You > > > know > > > >>>> how we do it today". > > > >>>> > > > >>>> -Michal > > > >>>> > > > >>>> > > > >>>> On Tue, Jun 3, 2014 at 7:59 PM, tommy-carlos williams < > > > >>>> [email protected] > > > >>>> wrote: > > > >>>> > > > >>>> I don’t think you really can forget about plugins for a second. > > > >>>> > > > >>>>> In my personal opinion, the entire ./platforms folder should be a > > > build > > > >>>>> artefact. If you want to freeze iOS, then use a branch or a new > > clone > > > >>>>> of > > > >>>>> the project. > > > >>>>> > > > >>>>> It’s not that I can think of no scenarios where supporting > multiple > > > >>>>> platform versions would be needed, it’s just that I think it’s > > > >>>>> needlessly > > > >>>>> complex vs using a dev workflow to solve those problems. > > > >>>>> > > > >>>>> I already version cordova within a project… I have a local > version > > of > > > >>>>> cordova installed into ./node_modules for each project and use > > Grunt > > > to > > > >>>>> call ./node_modules/.bin/cordova rather than the global cordova > > cli. > > > >>>>> > > > >>>>> On 4 June 2014 at 9:46:29, Terence M. Bandoian ( > [email protected]) > > > >>>>> wrote: > > > >>>>> > > > >>>>> Forgetting about plugins for a second, what if: > > > >>>>> > > > >>>>> - I complete a project for iOS > > > >>>>> - six months later the client decides to port to Android and: > > > >>>>> - I want the latest fixes for Android > > > >>>>> - I want to keep the iOS version frozen for the time being > > > >>>>> > > > >>>>> I would expect releases for each platform to be on different > > > schedules. > > > >>>>> > > > >>>>> -Terence > > > >>>>> > > > >>>>> > > > >>>>> On 6/3/2014 6:17 PM, Michal Mocny wrote: > > > >>>>> > > > >>>>> Most plugins will work across a wide range of platform versions, > > so > > > >>>>>> often > > > >>>>>> it would work to have disparate platform versions even with > > plugins. > > > >>>>>> However, I do concede that in general this isn't a complexity we > > > focus > > > >>>>>> > > > >>>>>> on. > > > >>>>> > > > >>>>> Interested in your thoughts about the other points. > > > >>>>>> > > > >>>>>> -Michal > > > >>>>>> > > > >>>>>> > > > >>>>>> On Tue, Jun 3, 2014 at 7:07 PM, tommy-carlos williams < > > > >>>>>> > > > >>>>>> [email protected]> > > > >>>>> > > > >>>>> wrote: > > > >>>>>> > > > >>>>>> You can’t have version x of a plugin for iOS and version y of > > that > > > >>>>>> same > > > >>>>>> > > > >>>>>>> plugin for Android, so multiple platform versions seems like a > > > >>>>>>> > > > >>>>>>> complexity > > > >>>>>> for complexity’s sake. > > > >>>>>> > > > >>>>>>> It’s true that different apps need to support different > platform > > > >>>>>>> > > > >>>>>>> versions, > > > >>>>>> but I would suspect that the greatest majority of those would > want > > > the > > > >>>>>> same > > > >>>>>> version of iOS and Android in app x. > > > >>>>>> > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> On 4 June 2014 at 9:04:42, Brian LeRoux ([email protected]) wrote: > > > >>>>>>> > > > >>>>>>> That is the thing: you do not EVER want to have disparate > > versions > > > of > > > >>>>>>> platforms. Plugins negate this potential fantasy. > > > >>>>>>> > > > >>>>>>> You want version locked deps. You want to use package.json to > do > > > that > > > >>>>>>> > > > >>>>>>> b/c > > > >>>>>> that is what the runtime we use has standardized itself on. > > > >>>>>> > > > >>>>>>> > > > >>>>>>> On Tue, Jun 3, 2014 at 1:12 PM, Terence M. Bandoian < > > > >>>>>>> [email protected] > > > >>>>>>> wrote: > > > >>>>>>> > > > >>>>>>> A typical use case might be: > > > >>>>>>> > > > >>>>>>>> -project1 > > > >>>>>>>> -project1-ios > > > >>>>>>>> -project1-android > > > >>>>>>>> -project1-windows > > > >>>>>>>> ... > > > >>>>>>>> -projectN > > > >>>>>>>> -projectN-ios > > > >>>>>>>> -projectN-android > > > >>>>>>>> -projectN-windows > > > >>>>>>>> > > > >>>>>>>> with a different platform version for each sub-project. > > > >>>>>>>> > > > >>>>>>>> Would CLI be installed globally? Locally for each sub-project? > > > >>>>>>>> Would a > > > >>>>>>>> project-platform have to be re-built if a plugin were added? > > > >>>>>>>> > > > >>>>>>>> -Terence > > > >>>>>>>> > > > >>>>>>>> > > > >>>>>>>> On 6/3/2014 1:47 PM, Michal Mocny wrote: > > > >>>>>>>> > > > >>>>>>>> Okay, so I think that implies: > > > >>>>>>>> > > > >>>>>>>>> (a) CLI versions tied to very specific platform versions ==> > to > > > >>>>>>>>> switch > > > >>>>>>>>> platform versions you must switching CLI versions ==> > switching > > > one > > > >>>>>>>>> platform version switches all platform versions. > > > >>>>>>>>> - Andrew pointed out this is currently the case, and is a > > problem > > > >>>>>>>>> that > > > >>>>>>>>> leads to users not updating CLI as often as they otherwise > > would > > > >>>>>>>>> - I think this basically implies platforms cannot be > > > independently > > > >>>>>>>>> versioned (sure the semver numbers may differ, but for all > > > >>>>>>>>> practical > > > >>>>>>>>> purposes, you would use platforms from the same release date, > > > based > > > >>>>>>>>> on > > > >>>>>>>>> > > > >>>>>>>>> CLI > > > >>>>>>>> version). > > > >>>>>>>> > > > >>>>>>>>> (b) Require apps to depend on specific CLI version, assuming > > you > > > >>>>>>>>> mean > > > >>>>>>>>> > > > >>>>>>>>> with > > > >>>>>>>> a local package.json: > > > >>>>>>>> > > > >>>>>>>>> - Now all cordova projects must be node projects, which they > > > >>>>>>>>> currently > > > >>>>>>>>> > > > >>>>>>>>> are > > > >>>>>>>> not. > > > >>>>>>>> > > > >>>>>>>>> - Currently the cordova-cli creates apps, so we have a > globally > > > >>>>>>>>> > > > >>>>>>>>> installed > > > >>>>>>>> bootstrapping cordova-cli, and a locally installed specific > > > version > > > >>>>>>>> > > > >>>>>>>>> cordova-cli, a-la grunt/gulp. (this idea was thrown around > > > before). > > > >>>>>>>>> - Quite a dramatic change for cordova workflow, surely larger > > > than > > > >>>>>>>>> the > > > >>>>>>>>> current proposal. > > > >>>>>>>>> - Or we drop cordova-cli entirely and just publish grunt/gulp > > > >>>>>>>>> plugins > > > >>>>>>>>> > > > >>>>>>>>> to > > > >>>>>>>> > > > >>>>>>> "add cordova" to your existing web app. Thats an even more > > radical > > > >>>>>> > > > >>>>>>> departure and significant work. > > > >>>>>>>>> > > > >>>>>>>>> -Michal > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> On Tue, Jun 3, 2014 at 1:58 PM, Brian LeRoux <[email protected]> > > wrote: > > > >>>>>>>>> > > > >>>>>>>>> No, at least not how I'd see it done. > > > >>>>>>>>> > > > >>>>>>>>> 1.) Updating is important. Staying current: encouraged. > > > >>>>>>>>>> 2.) I'd make my App depend on a specific CLI version. I'd > call > > > >>>>>>>>>> into > > > >>>>>>>>>> > > > >>>>>>>>>> that > > > >>>>>>>>> > > > >>>>>>>> using npm scripts. > > > >>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>>> On Tue, Jun 3, 2014 at 10:48 AM, Michal Mocny < > > > >>>>>>>>>> [email protected]> > > > >>>>>>>>>> wrote: > > > >>>>>>>>>> > > > >>>>>>>>>> Thinking it through, if cordova platforms are deps of the > CLI, > > > to > > > >>>>>>>>>> install a > > > >>>>>>>>>> > > > >>>>>>>>>> specific version you wouldn't just do: > > > >>>>>>>>>> > > > >>>>>>>>>>> npm install -g [email protected] > > > >>>>>>>>>>> > > > >>>>>>>>>>>> you would actually need to: > > > >>>>>>>>>>>> > > > >>>>>>>>>>> cd $(npm config get prefix)/lib/node_modules/cordova > > > >>>>>>>>>>> > > > >>>>>>>>>>>> npm install --save [email protected] > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> ..and then remember to do that again whenever you `npm > > > update > > > >>>>>>>>>>>> -g` > > > >>>>>>>>>>>> > > > >>>>>>>>>>> ..and its harder to have multiple platform versions for > > > different > > > >>>>>>>>>>> > > > >>>>>>>>>>> projects > > > >>>>>>>>>>> > > > >>>>>>>>>> (questionable if this is useful for devs outside of > cordova > > > >>>>>>>>>> > > > >>>>>>>>>>> contributors, > > > >>>>>>>>>>> but may be useful at last test upgrades when we ship new > > > platform > > > >>>>>>>>>>> versions). > > > >>>>>>>>>>> > > > >>>>>>>>>>> -Michal > > > >>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>>> On Tue, Jun 3, 2014 at 1:28 PM, Brian LeRoux <[email protected]> > > > wrote: > > > >>>>>>>>>>> > > > >>>>>>>>>>> NIH: not invented here > > > >>>>>>>>>>> > > > >>>>>>>>>>> On Tue, Jun 3, 2014 at 10:17 AM, Andrew Grieve < > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> [email protected] > > > >>>>>>>>>>> > > > >>>>>>>>>> wrote: > > > >>>>>> > > > >>>>>>> On Tue, Jun 3, 2014 at 12:19 PM, Brian LeRoux <[email protected]> > > wrote: > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> Actually that was >0 LOC which is a fine argument if you > > ask > > > >>>>>>>>>>>>> me. > > > >>>>>>>>>>>>> And > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> we > > > >>>>>>>>>>>> > > > >>>>>>>>>>> both know there is much more to it than just that. > > > >>>>>>>>>>> lazy_load…for > > > >>>>>>>>>>> > > > >>>>>>>>>>>> example. > > > >>>>>>>>>>>>> If you're concerned about code, there is a tonne of much > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> lower-hanging > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> fruit. > > > >>>>>>>>>>> > > > >>>>>>>>>>> Bundling platforms is bundling a dep that we require to > > > operate. > > > >>>>>>>>>>>> We > > > >>>>>>>>>>>> > > > >>>>>>>>>>> do > > > >>>>>> > > > >>>>>>> not > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> require plugins to operate. You cannot build a project > > > without > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> having a > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>> platform and, indeed, you probably want more than one. > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> I don't require blackberry to create an iOS project. But > I > > do > > > >>>>>>>>>>>>> require > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> some > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> plugins. We use "npm cache add" to download plugins, I > > don't > > > >>>>>>>>>>>> see > > > >>>>>>>>>>>> how > > > >>>>>>>>>>>> > > > >>>>>>>>>>> platforms would not work just as easily. > > > >>>>>> > > > >>>>>>> > > > >>>>>>>>>>>>> Agree that we need discreet versioning: hence why I'm > > > >>>>>>>>>>>>> advocating > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> we > > > >>>>>>>>>>>> > > > >>>>>>>>>>> use > > > >>>>>> > > > >>>>>>> well understood, maintained, and effectively standard system > for > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> doing > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> this. We do not need NIH dependencies that is what > > > >>>>>>>>>>>> package.json is > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> for! > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> I don't know what NIH dependencies are. Googling > suggests > > > >>>>>>>>>>>> you're > > > >>>>>>>>>>>> talking > > > >>>>>>>>>>>> about drugs... > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> We *are* using npm for downloading, we're just not making > > the > > > >>>>>>>>>>>>> user > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> type > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> it > > > >>>>>>>>>>> > > > >>>>>>>>>>> directly. > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> Mark's approach also avoids the "what-if" cases where > > what's > > > in > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> your > > > >>>>>>>>>>>> > > > >>>>>>>>>>> node_modules might not match what's in your platforms/ > > > >>>>>> > > > >>>>>>> Does what Mark has implemented not address a use-case of yours? > > > >>>>>>>>>>>>> Or > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> are > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> we > > > >>>>>>>>>>> > > > >>>>>>>>>>> going back & forth over personal preference? > > > >>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> On Tue, Jun 3, 2014 at 9:07 AM, Andrew Grieve < > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> [email protected]> > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>> On Tue, Jun 3, 2014 at 11:34 AM, Brian LeRoux <[email protected] > > > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> Andrew, you misunderstand. I am talking about bundling > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> platforms > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> directly > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>> as dependencies of the CLI. > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> A trivial example: > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> CLI > > > >>>>>>>>>>>>>>>> '-ios > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> Wherein, CLI declares the precise version of the > > platform > > > it > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> uses. > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> We > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>> could > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> wildcard. I don't know that we want or need to do that. > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> It would have identical semantics to today except the > > > >>>>>>>>>>>>>>>> download > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> penalty > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> happens up front. (We can remove lazy_load logic. We > > don't > > > >>>>>>>>>>>>>> have > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> to > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> maintain > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>> our own dependency manifests and caches. LESS code: good > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> thing.) > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> Let me paste the code for doing our own caching for > you: > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>> cordova_npm: function lazy_load_npm(platform) { > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> if (!(platform in platforms)) { > > > >>>>>>>>>>>>>>> return Q.reject(new Error('Cordova library "' + > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> platform > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> + > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> '" > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> not recognized.')); > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> } > > > >>>>>>>>>>>>>>> var pkg = 'cordova-' + platform + '@' + > > > >>>>>>>>>>>>>>> platforms[platform].version; > > > >>>>>>>>>>>>>>> return Q.nfcall( npm.load, {cache: > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> path.join(util.libDirectory, > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> 'npm_cache') }) > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> .then(function() { > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> return Q.ninvoke(npm.commands, 'cache', ['add', > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> pkg]); > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> }).then(function(info) { > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> var pkgDir = path.resolve(npm.cache, info.name, > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> info.version, > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> 'package'); > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> return pkgDir; > > > >>>>>>>>>>>>>>> }); > > > >>>>>>>>>>>>>>> }, > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> There's really no "amount of code" argument here. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> Adding platforms at a specific version would mean > having > > a > > > >>>>>>>>>>>>>>> specific > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> version > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>> of the CLI. Yes: this is way better! Explicit > dependencies > > is > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> best > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>> way > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> to work w/ the small modules thing. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> Bundling platforms with CLI would be like bundling all > > of > > > >>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> plugins > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> with > > > >>>>>>>>>>>>> CLI, or like bundling every npm module with npm. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> Devs need to be able to try out platforms at different > > > >>>>>>>>>>>>>>> versions. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> We > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> should > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> not do anything that keeps users clinging to old versions > of > > > CLI > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> (e.g. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> they > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> do this now because they don't want to update to new > > > >>>>>>>>>>>>>> platforms) > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> On Mon, Jun 2, 2014 at 7:34 PM, Michal Mocny < > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> [email protected]> > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>> On Mon, Jun 2, 2014 at 10:14 PM, Andrew Grieve < > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> [email protected] > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>>> Here's both flows as I understand them: > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> Direct NPM flow: > > > >>>>>>>>>>>>>>>>>> # Downloads platform source into node_modules > > > >>>>>>>>>>>>>>>>>> npm install [email protected] --save > > > >>>>>>>>>>>>>>>>>> # Runs the create script and installs plugins to > > create > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> platforms/ios > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> cordova platform add ios > > --path=node_modules/cordova-ios > > > >>>>>>>>>>>>>>>> To be fair, I think with Brian's suggestion, platform > > add > > > >>>>>>>>>>>>>>>> FOO > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> would > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> by > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> default look in node_modules so you wouldn't be explicit > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> about > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> it, > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> and > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> also > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> the default cordova project package.json would depend > on > > > all > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> latest > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> versions of each platform, so the flows would actually > be: > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> cordova create Foo && cd Foo > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> npm install > > > >>>>>>>>>>>>>>>>>> npm install [email protected] --save > > > >>>>>>>>>>>>>>>>>> cordova platform add android > > > >>>>>>>>>>>>>>>>>> cordova platform add ios > > > >>>>>>>>>>>>>>>>>> # crazy idea? use npm post-install hooks to auto-run > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> create/upgrade > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> so > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> you usually don't need above two lines? > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> Compared to: > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> cordova create Foo && cd Foo > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> cordova platform add android > > > >>>>>>>>>>>>>>>>>> cordova platform add [email protected] > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> I think #2 is enough better that its not worth > > > changing. > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> Cordova-to-npm flow (as Mark's implemented): > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> # Runs "npm cache add cordova-ios", then runs create > > > >>>>>>>>>>>>>>>>>> script > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> from > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> ~/cache/cordova-ios/bin/create > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> cordova platform add [email protected] > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> - In both flows: we use npm to do all of the heavy > > lifting > > > >>>>>>>>>>>>>>>>>> - In both flows: the npm module is cached in your > home > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> directory > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> - In both flows?: we store the plugins & platforms > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> explicitly > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> within > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> config.xml (Gorkem's added this) > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> - In flow #1, we have a package.json & a node_modules, in > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> #2 > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> we > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> don't. > > > >>>>>>>>>>> > > > >>>>>>>>>>>> Why put the onus on the user to fetch the platform source > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> when > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> it's > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> as > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> easy > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> as running "npm cache add" under-the-hood? > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> In regards to the idea of using require() on > platform > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> scripts > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> instead > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> of > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> subshelling: I think this is tangental to the debate of > how > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> to > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> fetch > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> the > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> platform. > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> In regards to using "npm install" directly when using > > the > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> plugman > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> workflow: > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> Sounds good to me. > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> On Mon, Jun 2, 2014 at 6:05 PM, Brian LeRoux < > > > [email protected]> > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> Eventually, yes. (Sort of how Grunt works now.) > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> On Mon, Jun 2, 2014 at 5:52 PM, Terence M. Bandoian < > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> [email protected] > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> Can multiple versions of a platform be installed > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> side-by-side? > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> -Terence > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> On 6/2/2014 3:04 PM, Michal Mocny wrote: > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> >From original email: "Ideal future CLI uses > > platforms > > > >>>>>>>>>>>>>>>>>>>> just > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> like > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> other > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> deps. > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> We lose lazy loading but network and disk is cheap so > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> it > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> wasn't > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> really > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> important anyhow." > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> Made me think Brian is proposing adding platforms to > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> cli > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> package.json > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> dependencies, and you would have a single global > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> install > > > >>>>>>>>>>>>>>>>>>> cordova-platforms. > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> Then you can override the version with an explicit > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> install > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> as > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> he > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> mentions > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> "npm i [email protected]". > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> Personally, I think that workflow could work, and > has > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> a > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> few > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> benefits, > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> but > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> I'm not sure that option compares well to the > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> alternative > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> of > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> just > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> lazy > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> loading using npm cache add as Mark has already > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> implemented > > > >>>>>>>>>>>>>>>>>>> an > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> experiment > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> (anyone interested in this topic should take a look at > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> that > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> patch). > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> The steps Brian & Ian outline about how to package > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> platforms > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> for > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> release > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> to > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> npm are possibly an improvement over the old-style > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> platform-centric > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> workflow. Instead of downloading a tarball and > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> running > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> a > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> create > > > >>>>>>>>>>> > > > >>>>>>>>>>>> script, > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> you npm install and run a create() function, and that > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> can > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> more > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> easily > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> be > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> bundled into other build scripts/boilerplate. For > CLI > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> workflow, > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> not > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> sure > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> that there is any real difference (as Jesse says). > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> One > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> note, > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> though: > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> cordova-* platforms are templates for projects, so > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>>>> package.json > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> of > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> npm package itself shouldn't end up inside projects > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> that > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> are > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> created > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> with > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> it. I think. > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> -Michal > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> On Mon, Jun 2, 2014 at 3:42 PM, Ian Clelland < > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> [email protected]> > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>>>>>>> There seems to be some confusion -- I think people > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> are > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> talking > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> about > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> different things here, but perhaps it's just me ;) > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> I thought that Brian's original suggestion was about > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> being > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> able > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> to > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> host > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> Cordova platforms directly on NPM. That's why each > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> one > > > >>>>>>>>>>>>>>>>>>>> would > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> require > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> a > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> package.json. (which would probably end up in > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> <project>/platforms/<platform> in a project, but > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> that's > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> not > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> point > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> of > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> it). > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> As an NPM project, we then would have the > > opportunity > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> (though > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> not > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> obligation) to make all of the supporting scripts for > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> each > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> platform > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> (create, build, run, etc) part of the node module, > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> for > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> a > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> uniform > > > >>>>>>>>>>> > > > >>>>>>>>>>>> interface > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> that doesn't require going through the command line. > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> It's not about making platforms into CLI > dependencies > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> (any > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> more > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> than > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> plugins are CLI dependencies right now), or about > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> making > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> a > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> cordova-based > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> project into a node package. > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> If that's right, then I support that -- I'd like the > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> platforms > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> to > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> be > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> installable through npm, and to be versioned > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> separately, > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> installable > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> separately, and scriptable without having to spawn > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> subshells. > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> And if I have it completely wrong, then let me > know > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> -- > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> I'll > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> just > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> go > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> back > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> to > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> fixing File bugs ;) > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> On Mon, Jun 2, 2014 at 3:29 PM, Andrew Grieve < > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> [email protected]> > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> Not sure what your question is. > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> On Mon, Jun 2, 2014 at 2:03 PM, Brian LeRoux < > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>> [email protected]> > > > >>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> *ahem > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> On Wed, May 28, 2014 at 11:20 AM, Brian LeRoux < > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> [email protected] > > > >>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> npm i [email protected] > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> Right? > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> On May 27, 2014 11:06 PM, "Andrew Grieve" < > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>> [email protected] > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> Lazy loading is what will give us the ability to > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> support > > > >>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>> multiple > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> versions > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> of platforms. > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> If we don't support users choosing the version of > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>> platform > > > >>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>> they > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> want, > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> then they will resist updating their version of > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> CLI > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>> (like > > > >>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> they > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> do > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> right > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> now). > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> I'm very keen to allow users to chose their > > > >>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>> platform > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>> versions, > > > >>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>> just > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> as > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> they > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> are able to choose their plugin versions. > > > >>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>> On Tue, May 27, 2014 at 5:57 PM, Mark > > Koudritsky > > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>> < > > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>> [email protected] > > > >>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>> wrote: > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> +1 > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> Steve published (some of?) the platforms on > npm > > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>>> as > > > >>>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>> part > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>> of > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> the > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> latest > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> release. > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> https://www.npmjs.org/package/cordova-android > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>> https://www.npmjs.org/package/cordova-ios > > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>>> CLI already require()s npm for downloading > > > >>>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>>> plugins > > > >>>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>> from > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>> the > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> registry. > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> Extending this to platforms is on my todo list for > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> this\next > > > >>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>> week. > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> The "lazy" part of the loading was about > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> caching, > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> so > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>> we > > > >>>>>>>>>>> > > > >>>>>>>>>>>> don't > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>>> lose > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> it > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> since > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> npm does its own caching. > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>> On Tue, May 27, 2014 at 5:42 PM, Parashuram > > > >>>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>>> Narasimhan > > > >>>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>> (MS > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>> OPEN > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> TECH) > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> < > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> [email protected]> wrote: > > > >>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>> +1. This will also be a step towards > releasing > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>> platforms > > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>> independently. > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>> Will the CLI have a semver like dependency on > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>> > > > >> > > > > > > > > > > > > > -- > > > Carlos Santana > > > <[email protected]> > > > > > >
