Today, @types packages are only published to the npm registry. This accounts for a large amount of traffic, in large part because of automatic type acquisition (ATA), a feature that leverages @types packages to provide code completion (a.k.a. IntelliSense) for JavaScript users. Because this functionality is crucial for editors, it's important to provide a source of redundancy to ensure reliability. Additionally, this is a good way to give users an option to select their registry.
This won't be available until github's package registry is out of beta, after 3.7's release.
Right now you have to authenticate to install packages from github's package registry. I think you might have to be a member of the org that's in the beta? In any case, this is a 3.8 feature for shortly after 3.7 releases.
Here's the current plan:
Automatic Type Acquisition will slowly move over to the github package registry completely. All @types/* packages will remain on npm for human consumption, but will be mirrored on @definitelytyped/* for editor consumption.
If we publish to @types on github, skeletal dependents are not needed to resolve DT packages correctly. They would solely improve performance when ATA installs non-@types dependencies.
On @definitelytyped/*, publish versions of npm packages stripped of everything but d.ts files.
Publish packages that:
I believe github's proxy will already cache dependents of @definitelytyped/* packages, so skeletal depedents would only reduce the number of times that ATA installs an npm-based package from 1 (with caching) to 0 (with a skeletal dependent on GHPR), whereas today it's one for each time an @types/* package depends on it. So less load on npm is already part of @definitelytyped/* packages.
For the other 3 benefits, we need to know:
E.g, a JS user installs pikaday and moment. @definitelytyped/pikaday depends on the skeletal dependency @definitelytyped/moment, but the user also has moment with its own shipped typings in their node_modules
Prototype version of ATA reads from @definitelytyped/types-publisher, but requires you to define an environment variable and have a global .npmrc with //npm.pkg.github.com with package reading rights
We had a couple companies a long time ago ask for ATA to be able to be configured to point at an internal registry. This'll effectively enable that.
@weswigham Only if the registry or the package name is configurable, right? I was literally thinking of
installTypesRegistry('github') || installTypesRegistry('npm')
for 3.8.
4.0
Very presumptuous ;)
Only if the registry or the package name is configurable, right?
Well, I mean, I think enabling all custom registries follows the "zero, one, or infinity possibilities" rule.
Update: As of this morning, types-publisher is publishing updates to packages at @testtypepublishing/*. I'll watch it for a while to shake the bugs out. When I have time I'll write a script to fill in old versions of packages as well.
@sandersn you wanna update the summary here with the results of today's discussion?
Yes, and the schedule needs to be updated as well.
Moving to 3.9; the 3.8 parts of this task are done.
This is actually more likely to be 4.1, but that's not a milestone yet.
Most helpful comment
Very presumptuous ;)