In Capacitor docs (from ionic), npx is user everywhere https://capacitor.ionicframework.com/
El jueves, 16 de mayo de 2019, Jesse <purplecabb...@gmail.com> escribió: > I think there is a disconnect on the actual proposal here. > > Here's the pr again ( keep the discussion here please ) > https://github.com/apache/cordova-docs/pull/987/files > > The only real use of npx as a one-off command would be the call to create a > new app. ie. `npx cordova create dirname ...` > The instructions after that are to cd into the dir, and install cordova > locally. > All npx calls after that are run from inside a project folder and are just > the same as npm run commands, they access the binary exported in > node_modules/cordova > > That said, I do still think npx should be presented as an alternative, and > not necessarily the 'preferred' way. > > > > > > > On Wed, May 15, 2019 at 10:38 PM Dmitry Blotsky <dmitry.blot...@gmail.com> > wrote: > > > In terms of exposure, btw, npx is indeed strictly worse than npm install. > > It checks for dependencies, installs them, and runs them: all at every > call > > of a command. That is more frequent than how often anyone runs npm > install, > > and is more overhead than running a shell command directly. > > > > From a higher-up perspective though: every other software ecosystem gets > > by with just running commands in a shell. How is our situation so > > outlandish that the most time-tested tools don’t meet our command-running > > needs? > > > > Dmitry > > > > > On May 15, 2019, at 22:29, Dmitry Blotsky <dmitry.blot...@gmail.com> > > wrote: > > > > > > If it’s any convincing data: none of React Native, Ionic, Angular, > > Ember, Meteor, or Vue mention npx. > > > > > > They all recommend npm install -g or some variant using more mature > > tools. > > > > > > I agree that it would be a piece of cake for us to instruct people to > > install cordova for the local user, or to use per-project installs of > > cordova. These options are all still pretty convenient, and don’t incur > the > > security penalties of npx. > > > > > > Dmitry > > > > > >> On May 15, 2019, at 02:15, Jesse <purplecabb...@gmail.com> wrote: > > >> > > >> Given how contentious this has become, I think our best approach would > > be > > >> to continue with our global install expectation, and add documentation > > on > > >> a) what to do if you have issues with `npm i -g cordova` [1] > > >> b) document how to do local dependencies and use npx ( this might be a > > good > > >> blog post as well as permanent documentation ) > > >> > > >> Regarding some of the issues stated previously: > > >> > > >>>> Dmitry: 1. It is strictly less secure than the status quo, and all > > >> alternatives. .. > > >> The exposure to the user is no different than `npm install -g`, it is > > just > > >> harder to know exactly what is happening. > > >> > > >>>> Dmitry: 2. It is strictly less stable than a local installation ... > > >> Only the first `npx cordova create ...` will result in a fetch, > further > > >> uses of npx cordova will use the cached version, and can be done > > without a > > >> network connection. > > >> > > >>>> Darryl: Encouraging people to install Cordova globally causes issues > > >> when working on multiple projects ... > > >> Do we have a way of knowing how often this occurs? It sounds rare to > me. > > >> Regardless, there is no reason they can't go ahead install > > cordova@version > > >> as a dev dependency > > >> > > >> Personally, having read up on npx and done some basic tests, I am okay > > with > > >> it. However, I also don't feel we have to force it on everyone. > > >> We can suggest is as an alternative, and perhaps after we are all more > > >> comfortable with it, it can become the default. > > >> > > >> > > >> [1] > > >> > > https://docs.npmjs.com/resolving-eacces-permissions- > errors-when-installing-packages-globally > > >> > > >> > > >> > > >> > > >> On Tue, May 14, 2019 at 8:12 PM gandhi rajan <gandhiraja...@gmail.com > > > > >> wrote: > > >> > > >>> Hi Dmitry, > > >>> > > >>> I second you on this. > > >>> > > >>>> On Tuesday, May 14, 2019, Dmitry Blotsky <dmitry.blot...@gmail.com> > > wrote: > > >>>> > > >>>> I'm really glad this discussion lit up, because it clearly shows > that > > >>> this > > >>>> issue isn't settled. > > >>>> > > >>>> I personally have few opinions about the "best" solution here, but I > > >>>> firmly believe that npx is a non-starter for these 2 reasons: > > >>>> 1. It is strictly less secure than the status quo, and all > > alternatives. > > >>>> It is literally downloading code from hundreds of untrusted parties > > and > > >>>> immediately running it. It's worse than piping a curl command into > > bash > > >>> (at > > >>>> least you can check the curl command's URL, or checksum the > downloaded > > >>>> script). > > >>>> 2. It is strictly less stable than a local installation because now > > every > > >>>> call to Cordova goes through an opaque dependency. > > >>>> > > >>>> Unless both of those can be addressed, I think we shouldn't consider > > npx. > > >>>> > > >>>> Dmitry > > >>>> > > >>>>> On May 10, 2019, at 4:31 PM, Oliver Salzburg < > > >>> oliver.salzb...@gmail.com> > > >>>> wrote: > > >>>>> > > >>>>> Our DX is not good and this proposal would have the potential to > > have a > > >>>>> positive impact on that. I'm sorry that you're not convinced yet. > > >>>>> > > >>>>> Because I don't want to skip back and forth between GitHub and the > > >>>>> mailing list, I'll address your points here. > > >>>>> > > >>>>> - When you start a new project, unless you create a new cordova > > project > > >>>>> every week, you'll download cordova. npx will only help you in > > >>>>> downloading the package and if you have downloaded it in the past, > it > > >>>>> will be pulled from the cache. > > >>>>> > > >>>>> - Yes, the Cordova CLI behavior can change over time, which is > > exactly > > >>>>> why you would not want to share a single global version with all of > > >>> your > > >>>>> projects. I consider this a pro-local point. > > >>>>> > > >>>>> - It is 4 more characters to type. Yes. I give you that. But if you > > >>> want > > >>>>> to interact with a local installation of cordova, what exactly is > the > > >>>>> alternative? Not installing locally? I disagree. > > >>>>> > > >>>>> - Your suggestion regarding writing a completely new module to > > initiate > > >>>>> a cordova project is completely besides the point here. If you had > > that > > >>>>> module, you'd still want to use it with npx. And using `npx > cordova` > > >>>>> pulls cordova into the cache where you are going to want to have it > > >>>>> anyway. If you had a slimmed down module, you now still need to > > >>> download > > >>>>> cordova. > > >>>>> > > >>>>> By using npx, given your usage examples, you would have less > > downloads > > >>>>> instead of more. > > >>>>> > > >>>>> I'm sorry, Brody, I don't see your points and I don't feel like > they > > >>>>> have been weighed appropriately against the benefits I proposed > > >>> earlier. > > >>>>> > > >>>>> I would also appreciate it if we could try to keep the conversation > > to > > >>> a > > >>>>> single media. The split between mailing list and GitHub is not > > >>>> constructive. > > >>>>> > > >>>>> Almost like putting part of your application in a global context > and > > >>>>> another part in a local context is not constructive... > > >>>>> > > >>>>>> On 2019-05-10 23:08, Chris Brody wrote: > > >>>>>> I am very sorry to say that I am still not convinced about this > > idea. > > >>>>>> I just raised some concerns in a recent comment in: > > >>>>>> https://github.com/apache/cordova-docs/issues/838 > > >>>>>> > > >>>>>> And I think I am not the only one right now. > > >>>>>> > > >>>>>> As I said in cordova-docs#838, I would favor that we mention using > > >>>>>> `npx cordova` *as an option* in a limited number of places. > > >>>>>> > > >>>>>> I would like to express my appreciation to Oliver for the time and > > >>>>>> effort has given to improve the documentation, and to contribute a > > >>>>>> number of updates and fixes in the past. But I would rather take > the > > >>>>>> extra time and effort to ensure we keep up the best app DX we can. > > >>>>>> > > >>>>>> And I don't really follow what you mean about CORDOVA_CMDLINE, > would > > >>>>>> probably be easiest if we keep it in a separate discussion thread > or > > >>>>>> issue. > > >>>>>> > > >>>>>> On Fri, May 10, 2019 at 3:05 PM Oliver Salzburg > > >>>>>> <oliver.salzb...@gmail.com> wrote: > > >>>>>>> > > >>>>>>> I have already started working on a PR to make the necessary > > changes > > >>> to > > >>>>>>> the documentation, as I was under the impression that consensus > > >>>>>>> regarding this issue was already reached: > > >>>>>>> > > >>>>>>> https://github.com/apache/cordova-docs/pull/987 > > >>>>>>> > > >>>>>>> Specifically this might be of interest: > > >>>>>>> > > >>>>>>> https://github.com/apache/cordova-docs/blob/ > > >>>> 04363c2796199f5379fa2b5f000099ac8b1a488a/www/docs/en/dev/ > > >>>> guide/cli/index.md > > >>>>>>> > > >>>>>>> I believe installing the cordova dependency as a devDependency > > should > > >>>> be > > >>>>>>> part of the "create" task. I was planning to propose the > necessary > > >>>>>>> changes in another PR, but the freshly ignited debate caused me > to > > >>> hold > > >>>>>>> on that. > > >>>>>>> > > >>>>>>> I also brought up another area of concern regarding > CORDOVA_CMDLINE > > >>> in > > >>>>>>> hooks. I mentioned this in the PR. > > >>>>>>> > > >>>>>>> > > >>>>>>>> On 2019-05-10 20:42, Jesse wrote: > > >>>>>>>> Also thanks for the comprehensive write-up Oliver! > > >>>>>>>> > > >>>>>>>> Yeah, I am good with a move to recommend npx. > > >>>>>>>> I just ran thru the steps and everything seems to work fine with > > it. > > >>>>>>>> > > >>>>>>>> One other reservation I had was just about network usage, and > > being > > >>>>>>>> sensitive to places where bandwidth during the day is extremely > > >>>> costly. I > > >>>>>>>> verified that having previously installed platforms android+ios > in > > >>>> other > > >>>>>>>> projects, I was able to `npx cordova platform add android` with > > the > > >>>> network > > >>>>>>>> off and it used a cached version. > > >>>>>>>> > > >>>>>>>> Are our new getting started steps going to be this ?: > > >>>>>>>> ``` > > >>>>>>>> npx cordova create myNewCordovaApp > > >>>>>>>> cd myNewCordovaApp > > >>>>>>>> npm i cordova --save-dev > > >>>>>>>> npx cordova platform add android > > >>>>>>>> npx cordova run android > > >>>>>>>> ``` > > >>>>>>>> > > >>>>>>>> I believe we may also find some issues around cordova-lib having > > >>>>>>>> expectations of number of args and how it outputs some error > > >>>> messages, but > > >>>>>>>> hopefully tests will reveal those. > > >>>>>>>> > > >>>>>>>> Cheers, > > >>>>>>>> Jesse > > >>>>>>>> > > >>>>>>>> > > >>>>>>>>> On Fri, May 10, 2019 at 2:46 AM <raphine...@gmail.com> wrote: > > >>>>>>>>> > > >>>>>>>>> Thanks for that structured write-up, Oliver. You saved me from > > >>>> writing all > > >>>>>>>>> of that myself. > > >>>>>>>>> > > >>>>>>>>> +100 on all those points > > >>>>>>>>> > > >>>>>>>>> Oliver Salzburg <oliver.salzb...@gmail.com> schrieb am Fr., > 10. > > >>> Mai > > >>>> 2019, > > >>>>>>>>> 11:01: > > >>>>>>>>> > > >>>>>>>>>> I don't see how third-party tools like nvm or nvm-windows > play a > > >>>> role in > > >>>>>>>>>> this. If those tools have defects, so be it, but that > shouldn't > > >>>> steer a > > >>>>>>>>>> decision when the tools in question ship with the official > tools > > >>>> that we > > >>>>>>>>>> use (NodeJS). > > >>>>>>>>>> This holds especially true if the issues have already been > > fixed. > > >>>>>>>>>> > > >>>>>>>>>> That being said, it seems like part of this discussion is > > already > > >>>> going > > >>>>>>>>>> into a direction of local vs. global Cordova install, which I > > >>> didn't > > >>>>>>>>>> even think was up for debate anymore. What was up for debate > > last > > >>>> night, > > >>>>>>>>>> was how to interact with local Cordova installs. > > >>>>>>>>>> > > >>>>>>>>>> However, let me reiterate all points regarding the entire > issue: > > >>>>>>>>>> > > >>>>>>>>>> 1. A global Cordova installation is a huge issue in itself, as > > >>>>>>>>>> components in Cordova interact with each other in a way that > > >>>> sometimes > > >>>>>>>>>> the global components are used and sometimes the local > > components. > > >>>> This > > >>>>>>>>>> happens during runs of individual tasks, like "prepare", where > > >>> both > > >>>> the > > >>>>>>>>>> local and the global cordova-common are loaded for example. > > >>>>>>>>>> This issue would easily be avoided by placing Cordova itself > > >>>> locally in > > >>>>>>>>>> the project. It allows a per-project Cordova version, which is > > >>>>>>>>>> controlled through the package.json, like any other Cordova > > >>>> component. > > >>>>>>>>>> Having your core component global is a horrible design and > many > > >>>> other > > >>>>>>>>>> projects have already realized this years ago and adjusted > > >>>> accordingly. > > >>>>>>>>>> Think gulp-cli, babel-cli, ... > > >>>>>>>>>> > > >>>>>>>>>> The current approach leads to extremely hard to debug issues > > and, > > >>>>>>>>>> ultimately, developer frustration. > > >>>>>>>>>> > > >>>>>>>>>> 2. Interacting with a local dependency that has a binary > > >>> entrypoint > > >>>> in > > >>>>>>>>>> node_modules/.bin is exactly what npx was made for. It is > > already > > >>>>>>>>>> established as a tool in the NodeJS world and many other > > projects > > >>>> make > > >>>>>>>>>> use of it in the manner we're suggesting. > > >>>>>>>>>> https://reactjs.org/docs/create-a-new-react-app.html > > >>>>>>>>>> https://babeljs.io/docs/en/babel-cli > > >>>>>>>>>> https://gulpjs.com/docs/en/getting-started/quick-start > > >>>>>>>>>> > > >>>>>>>>>> There needs to be a very good reason to avoid adapting a well > > >>>>>>>>>> established approach in the environment you're working in. > I'll > > >>> get > > >>>> to > > >>>>>>>>>> that. > > >>>>>>>>>> > > >>>>>>>>>> 3. Suggesting npx as a way to interact with the Cordova CLI > not > > >>> only > > >>>>>>>>>> serves the purpose of invoking the node_module/.bin > entrypoint, > > >>> but > > >>>> it > > >>>>>>>>>> will also already work to create a new project when cordova > > isn't > > >>>> even > > >>>>>>>>>> installed. This reduces the barrier of entry and establishes a > > way > > >>>> to > > >>>>>>>>>> interact with Cordova that will always work. > > >>>>>>>>>> > > >>>>>>>>>> It is extremely convenient and developers want convenience. If > > >>>> there is > > >>>>>>>>>> one thing we don't need in Cordova, then it is to > overcomplicate > > >>>> things, > > >>>>>>>>>> frustrate developers and drive them away. > > >>>>>>>>>> > > >>>>>>>>>> 4. That being said, convenience comes at a price and Dmitry > has > > >>>> outlined > > >>>>>>>>>> the issues that come with npx very well last night on Slack. I > > >>> agree > > >>>>>>>>>> with his points and they are also my own, but I feel the > > benefits > > >>>>>>>>>> massively outweigh these risks. > > >>>>>>>>>> > > >>>>>>>>>> npx downloads packages that aren't available locally and > > executes > > >>>> them. > > >>>>>>>>>> This is by-design and a feature I mentioned earlier. It also > > opens > > >>>> the > > >>>>>>>>>> door for a myriad of security issues, as it has the potential > to > > >>> run > > >>>>>>>>>> unwanted code with every single execution of `npx cordova`. > > >>>>>>>>>> You just have to type `npx cordoa` once, and suddenly you get > a > > >>>>>>>>>> typosquatted package from someone that sends off local data to > > the > > >>>>>>>>>> cloud. As a matter of fact, I published the package "rebecca" > > >>> years > > >>>> ago > > >>>>>>>>>> to illustrate exactly this point. Try `npx rebecca` to see > what > > I > > >>>> mean. > > >>>>>>>>>> While you can run npx with --no-install to avoid this, this > > would > > >>>> ruin > > >>>>>>>>>> any convenience we're trying to establish here. > > >>>>>>>>>> > > >>>>>>>>>> npx also adds another layer of complexity. You need an > > additional > > >>>> Node > > >>>>>>>>>> process to even locate the entrypoint you want to invoke, > check > > if > > >>>>>>>>>> downloads need to be made and so on. This would happen every > > >>> single > > >>>> time > > >>>>>>>>>> you invoke the Cordova CLI. I consider this a minor issue, but > > it > > >>>> is an > > >>>>>>>>>> issue nonetheless. > > >>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>>> With those points in mind, nobody is forced to use Cordova in > > the > > >>>> way we > > >>>>>>>>>> suggest in the docs. I can already install Cordova locally and > > use > > >>>> it > > >>>>>>>>>> with npx if I want to. Users who prefer a global installation > of > > >>>> Cordova > > >>>>>>>>>> to avoid the above mentioned issues, are still free to do so > and > > >>>> they > > >>>>>>>>>> should find instructions on how to set that up in the > > >>> documentation. > > >>>>>>>>>> > > >>>>>>>>>> This is about suggesting to users a way to get started with > > >>> Cordova > > >>>> with > > >>>>>>>>>> as little friction as possible and npx achieves this extremely > > >>> well > > >>>> and > > >>>>>>>>>> leaves us with a far better project structure by default. > > >>>>>>>>>> > > >>>>>>>>>>> On 10/05/2019 10:06, Jan Piotrowski wrote: > > >>>>>>>>>>> While that is correct, nvm-windows indeed had problems with > npx > > >>> not > > >>>>>>>>>>> working after it was first added to node - so Julio's was > > indeed > > >>>> true > > >>>>>>>>>>> in the past. > > >>>>>>>>>>> Luckily it was fixed, so even we lowly Windows users now can > > use > > >>>> npx. > > >>>>>>>>>>> > > >>>>>>>>>>> Am Fr., 10. Mai 2019 um 09:48 Uhr schrieb Oliver Salzburg > > >>>>>>>>>>> <oliver.salzb...@gmail.com>: > > >>>>>>>>>>>> npx ships with Node. > > >>>>>>>>>>>> > > >>>>>>>>>>>> On Fri, May 10, 2019, 00:33 Jesse <purplecabb...@gmail.com> > > >>>> wrote: > > >>>>>>>>>>>> > > >>>>>>>>>>>>> Hello Dmitry, > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> In my mind, cordova-cli is intended to be installed > globally, > > >>> in > > >>>>>>>>>> situations > > >>>>>>>>>>>>> where that is not is possible we could *maybe* recommend > that > > >>>> users > > >>>>>>>>> use > > >>>>>>>>>>>>> npx, but I don't think it's a great experience. btw, npx > > needs > > >>>> to be > > >>>>>>>>>>>>> globally installed ... so ok!? > > >>>>>>>>>>>>> This is really just a symptom of a bad node setup, and > would > > >>>> never > > >>>>>>>>>> happen > > >>>>>>>>>>>>> if using nvm or similar node switcher. > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> The issue raised in that thread appears to be simply > related > > to > > >>>> where > > >>>>>>>>>>>>> config stores its data, specifically opt in/out of > telemetry. > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> On Thu, May 9, 2019 at 2:45 PM Dmitry Blotsky < > > >>>>>>>>>> dmitry.blot...@gmail.com> > > >>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>> > > >>>>>>>>>>>>>> Hi all, > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> It’s been a while. :) I hope you’re all doing well. > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> I’m writing to start some mailing list discussion about > this > > >>>> GitHub > > >>>>>>>>>>>>> issue: > > >>>>>>>>>>>>>> https://github.com/apache/cordova-docs/issues/838. > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> Please say if we should continue talking there, and we can > > do > > >>>> that > > >>>>>>>>>>>>> instead. > > >>>>>>>>>>>>>> If not, let’s continue here. > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> It sounds like we’ve got a request to run Cordova without > a > > >>>> global > > >>>>>>>>>> sudo > > >>>>>>>>>>>>>> install. What are the ways you all can think of to achieve > > >>> this? > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> Dmitry > > >>>>>>>>>>> ------------------------------------------------------------ > > >>>> --------- > > >>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org > > >>>>>>>>>>> For additional commands, e-mail: dev-h...@cordova.apache.org > > >>>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>>> ------------------------------------------------------------ > > >>>> --------- > > >>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org > > >>>>>>>>>> For additional commands, e-mail: dev-h...@cordova.apache.org > > >>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>> > > >>>>>>>> > > >>>>>>> > > >>>>>>> > > >>>>>>> > > --------------------------------------------------------------------- > > >>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org > > >>>>>>> For additional commands, e-mail: dev-h...@cordova.apache.org > > >>>>>>> > > >>>>>> > > >>>>>> > > --------------------------------------------------------------------- > > >>>>>> To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org > > >>>>>> For additional commands, e-mail: dev-h...@cordova.apache.org > > >>>>>> > > >>>>> > > >>>>> > > >>>>> ------------------------------------------------------------ > --------- > > >>>>> To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org > > >>>>> For additional commands, e-mail: dev-h...@cordova.apache.org > > >>>>> > > >>>> > > >>>> > > >>> > > >>> -- > > >>> Regards, > > >>> Gandhi > > >>> > > >>> "The best way to find urself is to lose urself in the service of > others > > >>> !!!" > > >>> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org > > For additional commands, e-mail: dev-h...@cordova.apache.org > > > > >