I don't see how that can be true.
On Tue, Jun 3, 2014 at 7:23 PM, Brian LeRoux <[email protected]> wrote: > You know how we do it today? Just like that. > > > On Tue, Jun 3, 2014 at 4:20 PM, Michal Mocny <[email protected]> wrote: > >> Brian/Tommy, may you please write out the complete set of CLI commands >> you envision for: >> (a) create a new project and add 2 platforms >> (b) upgrade an existing project to a specific version >> >> I worry the current package.json proposal is more complex than we realize. >> >> -Michal >> >> >> On Tue, Jun 3, 2014 at 7:17 PM, tommy-carlos williams <[email protected] >> > wrote: >> >>> +1 >>> >>> >>> On 4 June 2014 at 9:17:09, Brian LeRoux ([email protected]) wrote: >>> >>> …and use package.json to achieve a frictionless env swap on a per project >>> basis, eventually making the CLI a thin shell that calls into >>> node_modules >>> ala Grunt, Gulp, etc. >>> >>> >>> On Tue, Jun 3, 2014 at 4: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 >>> > >>>>>>>>>>>>>>>>>>> >>> > >>>>>>>>>>>>>>>>>>> >>> > >>> > >>> >>> >> >
