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
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>
> >
> >
>
>

Reply via email to