typescript - VSCode - Sett opp et monorepo med en Deno (backend) mappe og en Vite (frontend) mappe
Jeg prøver å konfigurere et monorepo med en back (eller "api") mappe som bruker Deno og en front (eller "webapp") mappe som er en React-app (eller egentlig, hvilket som helst rammeverk, konfigurert med Vite).
Så prosjektet blander faktisk Deno og Node (hvis det er en dårlig idé, kan du stoppe meg akkurat nå). Jeg vurderer kanskje også å bruke Deno Linter og Formatter for hele prosjektet.
Filstrukturen vil se omtrent slik ut:
my-monorepo/
├── .vscode/
│ └── settings.json
├── back/
│ └── index.ts
├── front/
│ ├── src/
│ │ └── index.tsx
│ ├── index.html
│ └── vite.config.ts
├── .gitignore
├── deno.jsonc
└── package.json
Det fungerer stort sett, men hovedproblemet jeg møter akkurat nå er med VSCode Deno-utvidelsen.
Ville det være mulig å bruke de innebygde VSCode JS- og TS-språk-tjenestene for front/-mappen og Deno Language Server (deno lsp) for back/-mappen? Ellers blir TS sint (for eksempel må importene i back/ inkludere .ts, men i front må de ikke inkludere .ts).
Til slutt, hvis jeg kan få det til å fungere, vil jeg at det skal være lett for alle som kloner repoet å jobbe med det.
Alo, her er .vscode/settings.json-filen som referanse:
{
"deno.enable": true,
"deno.config": "./deno.jsonc",
"[typescript]": {
"editor.defaultFormatter": "denoland.vscode-deno",
}
}
Svar #1
Du kommer til å støte på problemer med denne oppsettet. Se disse relaterte GitHub-problemene 1, 2.
I stedet, bruk Denos LSP i ett arbeidsområde (din backend) og den vanlige TS LSP i det andre arbeidsområdet (din frontend), ved å bruke separate VS Code-innstillingsfiler i hver. (Hvis du gjør skripting på toppnivå i repo med Deno, er det også greit å duplisere den VS Code-konfigurasjonen for toppnivået.)
Åpne deretter et eget VS Code-vindu for hvert arbeidsområde i monorepoet ditt slik at de kan bruke sine egne LSP-er uten konflikt.
Svar #2
Du kan faktisk fortelle VSCode at du kun skal bruke Deno i noen spesifikke mapper, ved å legge dette til .vscode/settings.json:
{
// other configs...
"deno.enablePaths": [
"back" // <-- Deno will be used in "back", but not in "front"
// additional paths can be added as well
]
}
