>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 cordova-ios@3.5.0".

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 <iclell...@chromium.org> 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 <agri...@chromium.org>
> wrote:
>
> > Not sure what your question is.
> >
> >
> > On Mon, Jun 2, 2014 at 2:03 PM, Brian LeRoux <b...@brian.io> wrote:
> >
> > > *ahem
> > >
> > >
> > > On Wed, May 28, 2014 at 11:20 AM, Brian LeRoux <b...@brian.io> wrote:
> > >
> > > > npm i cordova-ios@3.5.0
> > > >
> > > > Right?
> > > > On May 27, 2014 11:06 PM, "Andrew Grieve" <agri...@chromium.org>
> > 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 <kam...@google.com
> >
> > > >> 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)
> > > <
> > > >> > panar...@microsoft.com> wrote:
> > > >> >
> > > >> > > +1. This will also be a step towards releasing platforms
> > > >> independently.
> > > >> > > Will the CLI have a semver like dependency on the platform
> > specified
> > > >> > > somewhere ? Would the cli have to require('npm') and do the
> > install?
> > > >> > >
> > > >> > > -----Original Message-----
> > > >> > > From: brian.ler...@gmail.com [mailto:brian.ler...@gmail.com] On
> > > >> Behalf
> > > >> > Of
> > > >> > > Brian LeRoux
> > > >> > > Sent: Tuesday, May 27, 2014 2:20 PM
> > > >> > > To: dev@cordova.apache.org
> > > >> > > Subject: adding platforms to npm for dependency sanity
> > > >> > >
> > > >> > > We've discussed this but I'm not sure the whole idea has
> > > crystalized.
> > > >> My
> > > >> > > proposal (based on previous discussions) below. I'll use iOS as
> an
> > > >> > example
> > > >> > > but this applies to all platforms supported by the CLI.
> > > >> > >
> > > >> > > First, we'd add two files:
> > > >> > >
> > > >> > > cordova-ios
> > > >> > > |-package.json
> > > >> > > '-index.js
> > > >> > >
> > > >> > > …I don't think I need to describe the utility of package.json
> but
> > > >> > index.js
> > > >> > > would expose programatic library apis:
> > > >> > >
> > > >> > > module.exports = { create:Function, run:Function,
> build:Function,
> > > >> > > clean:Function, log:Function}
> > > >> > >
> > > >> > > We then publish to npm. That is it for now. 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.
> > > >> > >
> > > >> > > Discuss!
> > > >> > >
> > > >> >
> > > >>
> > > >
> > >
> >
>

Reply via email to