Vyhledávání na webu

typescript - interní balíček Turborepo BEZ Next.js


Snažím se vytvořit interní balíček v projektu turborepo. Sdílený balíček následuje stejné nastavení jako příklad a funguje tak, jak je, ve frontendovém projektu Vite. Nicméně při importování tohoto modulu do backendu (Nest + SWC) selže vývojový skript s chybou Unexpected token 'export'.

Sestavený soubor main.js se snaží vyžádat balíček shared, ale je to pouze TypeScript soubor (jak je uvedeno v příkladu). Všechny příklady a další problémy používají Next.js, který má konfigurační možnost transpilePackages, která přesně dělá to, co se snažím dosáhnout. Existuje alternativa k transpilePackages, která funguje mimo Next.js? (nejlépe s SWC)

Věci, které jsem vyzkoušel:

  • včetně sdíleného balíčku v tsconfig.json
  • včetně toho v webpack.config.js (změnou vzoru vyloučení swc-loader tak, aby tato složka z node_modules byla zahrnuta)

Existuje velmi podobný problém jako můj, ale stále není vyřešený a používá Next.js.

Odpověď č. 1

Měl jsem to samé, postupoval jsem podle https://turbo.build/repo/docs/handbook/publishing-packages/bundling a pomohlo to.
Když jsem se snažil udělat to samé s "build": "tsc" v package.json mého balíčku, nefungovalo to správně, přechod na "build": "tsup src/index.ts --format cjs,esm --dts" fungoval lépe jak pro aplikaci ve Vite, tak pro můj backend v CommonJS.

Odpověď č. 2

Měl jsem stejný problém. Zahrnutí balíčku do vlastnosti "include" v tsconfig.json mi to vyřešilo. Jen se ujistěte, že nevylučujete celou složku node_modules.

{
   "compilerOptions": {...},
   "include": ["node_modules/PROJECT"],
   "exclude": ["node_modules(?!/PROJECT\b)(?:/.*)?"]
}

Související články