typescript - Vad är det korrekta sättet att själv hosta ett Deno-bibliotek?


Jag har satt upp en apache2-server och har placerat mitt bibliotek på http://example.com/lib/deno/[email / och sedan skapat en 301-omdirigering från http://example.com/lib/deno/test/ till det tidigare. I VS Code (med deno-tillägget) märkte jag att när jag importerar något som https://deno.land/std/http/server.ts får jag ett varningsmeddelande:

Implicitly using latest version (0.140.0) for https://deno.land/std/http/server.ts deno(deno-warn)

Om man följer URL:en omdirigeras det till https://deno.land/[email /http/server.ts

Men när jag importerar min egen http://example.com/lib/deno/test/mod.ts får jag inte ett liknande meddelande. Är denna varning på något sätt hårdkodad för att bara fungera med deno.land eller hostar jag saker på fel sätt?

Svar #1

Deno tillhandahåller en implementation av Language Server Protocol. För att integrera tätt med alla dess funktioner vad gäller modulupptäckt, autokomplettering, etc. behöver du implementera ett modulregister, som beskrivs här:

https://deno.land/[e-post skyddad]/language_server/imports

Här är grunderna för vad som krävs, men du behöver förstå detaljerna om API-slutpunkter, schema, etc. för att lyckas med din implementering.

Registerstöd för importkompletteringar

För att stödja att ett register kan upptäckas av Deno-språkservern behöver registret tillhandahålla några saker:

  • En schema definitionsfil. Denna fil behöver vara placerad på /.well-known/deno-import-intellisense.json. Denna fil tillhandahåller konfigurationen som behövs för att låta Deno-språktjänsten fråga registret och konstruera importspecifierare.

  • En serie API-slutpunkter som tillhandahåller de värden som ska ges till användaren för att slutföra en importspecifierare.

Svar #2

Meddelandet "Implicitly using latest version" skickas faktiskt av deno.land-servern som en HTTP-svarshuvud. För att leverera ett liknande varningsmeddelande från din egen server behöver du lägga till ett liknande svarshuvud i dina HTTP 302-omdirigeringssvar. Du kan ange vilket meddelande som helst som ska visas.

Svarshuvudet från deno.land kan visas så här:

> curl -XGET -I https://deno.land/std/http/server.ts
HTTP/2 302 
location: /[email /http/server.ts
x-deno-warning: Implicitly using latest version (0.140.0) for https://deno.land/std/http/server.ts

Hur du fäster denna rubrik till dina omdirigeringar kommer att bero på din webbserver.

Som referens kan du titta på den relevanta deno.land/x-källkoden på Github: https://github.com/denoland/dotland/blob/cd43f5f4a8d2dcb8982f96c0265dde8c8d69a304/routes/x/module.tsx#L638-L645