Ok. I really like Mike's proposal. Think we should do this. Its solves most of our woe. Slight caveat that I would like the cache to be in the format of:
~/.cordova/<thing>/<name>/<version> (To prevent weird string splitting logic/bugs emerging.) Fil: can you backlog this? I think it should come AFTER we finish fixing up plugman/jsinstall and at least one plugin xplatform done. On Mon, Mar 25, 2013 at 3:26 PM, Michael Brooks <[email protected]> wrote: > With respect to the lazy-loading suggestion, I know Brian has raised the > offline scenario on a previous thread. > > At install time of the CLI (`npm install -g cordova`), we can lazy-load all > platforms and sample app(s) for a given version. > > At install time of the CLI as a library (`npm install cordova`), we can not > lazy-load the platforms. This allows other distributions (e.g. > `phonegap-cli`) to not be forced to download a large number of > unnecessary files. > > Michael > > On Mon, Mar 25, 2013 at 3:18 PM, Filip Maj <[email protected]> wrote: > >> Really like this. It a) slims down the cli tools by lazy loading the >> libraries as they are needed and b) solves the upgrade/downgrade story, >> since eventually you'll be able to simply change the version of the >> cordova npm dependency at a project-level. >> >> The only "downside" (not really) is that every generated cordova-cli >> project now is implicitly an npm project as it needs a package.json at the >> top-level. >> >> On 3/25/13 11:06 AM, "Michael Brooks" <[email protected]> wrote: >> >> >+1 to locking the CLI to a version >> >+1 to the Grunt vision >> > >> >However, I'd like to propose a different approach to the CLI versioning >> >and >> >it can also solve the `create` command issue to help move towards a dumb >> >global `cordova`. >> > >> >## Cordova-CLI >> > >> >- npm version is still associated with a Cordova distribution >> >- Cordova-CLI does not vendor the Cordova distribution >> >- Adding a platform will lazy load the platform distribution into >> >~/.cordova/platform/<name>-<version>/ >> > - We can lazy load by downloading a gzip from the Apache Git web >> >server >> >- Next time the platform is needed, it is copied from >> >~/.cordova/platform/<name>-<version/ >> > >> >## Cordova Create >> > >> >- Creating an app should be a lazy load of the Hello World app >> > - Cached in ~/.cordova/app/<name>-<version>/ >> >- We can update the Hello World app to match a standard Cordova CLI >> >project >> >- Now the global Cordova CLI is a dumb tool >> > - On create: lazy loading or copying the hello world app >> > - On project command: shelling to ./node_modules/bin/cordova <command> >> > >> >On Fri, Mar 22, 2013 at 1:08 PM, Filip Maj <[email protected]> wrote: >> > >> >> As Tommay pointed out, you need to create the cordova project structure >> >>in >> >> the first place with some manner of tool.. >> >> >> >> On 3/22/13 11:58 AM, "tommy-carlos Williams" <[email protected]> >> wrote: >> >> >> >> >I don't have much to add except that I really like this about Grunt. >> >> > >> >> >However, it would get "interesting" with Cordova since the global is >> >>what >> >> >creates a project in the first place. I still think it could work and >> >> >have the global only responsible for creating dirs and setting up >> >> >package.json stuff etc... >> >> > >> >> >+1 for looking into this. >> >> > >> >> >On 23/03/2013, at 4:53, Brian LeRoux <[email protected]> wrote: >> >> > >> >> >> Right now the global executable is version locked to a Cordova >> >> >> release. If you have a project running 2.5 you are required to have >> >> >> Cordova/CLI 2.5. If you need to then work in Cordova 2.4 you need to >> >> >> downgrade (not really but you would to be safe). >> >> >> >> >> >> In Grunt .4 the global executable is dumb. It just shells to locally >> >> >> installed ./node_module version of Grunt. This enables project level >> >> >> versioning of Grunt. Nice feature. We can do the same thing: with the >> >> >> caveat that you would then require a package.json and ./node_modules >> >> >> folder in our Cordova projects. >> >> >> >> >> >> Discuss. >> >> >> >> >> >>
