Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fluffynuts/node-nuget-client
A NuGet client for Node
https://github.com/fluffynuts/node-nuget-client
Last synced: 5 days ago
JSON representation
A NuGet client for Node
- Host: GitHub
- URL: https://github.com/fluffynuts/node-nuget-client
- Owner: fluffynuts
- License: bsd-3-clause
- Created: 2020-05-04T18:33:26.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-11-07T13:48:52.000Z (2 months ago)
- Last Synced: 2025-01-02T14:05:36.592Z (10 days ago)
- Language: TypeScript
- Size: 784 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# node-nuget-client
## What?
A NuGet client for Node## Why?
I'd like to wrap a CLI nuget package with a node package
so I need a client## Why the silly name?
Like so many npm package names, the most obvious / best one
(`nuget-client`) _was already taken, **and abandoned**_## It's not complete tho?
Correct. Currently you can use the api or cli client to do:
### CLI
- query package info (cli: `npx node-nuget-client info `)
- search for packages (cli: `npx node-nuget-client search [words...]`)
- download a package (cli: `npx node-nuget-client download `)### API
```typescript
import { NugetClient } from "./nuget-client";
const client = new NugetClient();
const info = await client.fetchPackageInfo("nunit.consolerunner")
```## WHY IT TAKES SO LONG?!
Honestly, it's all up to the nuget api.
Because the nuget api is a web of indirections. To get to
downloading a package is (eventually) going to take 4
http calls. And I'm not (yet) even trying to resolve
dependencies.For extra fun, packages which have a long history will
take even longer because the query interface doesn't seem
to allow asking a simple question like "what's the info
on the current version of package [X]". Instead, you have to
fetch the entire history of that package and trawl it.
So, in addition to multiple http latencies, you may
spend time downloading and parsing 65k of json just to get
a few hundred bytes of useful information. This client
caches what it can (and will cache more in the near future),
so perhaps some of that cost is mitigated; I think that
the official nuget clients bootstrap their package queries
from the top every time.