cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Terence M. Bandoian" <tere...@tmbsw.com>
Subject Re: adding platforms to npm for dependency sanity
Date Mon, 02 Jun 2014 21:52:10 GMT
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 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 <iclelland@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 <agrieve@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" <agrieve@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 <kamrik@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)
>>>> <
>>>>>>> panarasi@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.leroux@gmail.com [mailto:brian.leroux@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!
>>>>>>>>


Mime
View raw message