typescript - Εσωτερικό πακέτο Turborepo ΧΩΡΙΣ Next.js
Προσπαθώ να δημιουργήσω ένα εσωτερικό πακέτο σε ένα έργο turborepo. Το κοινόχρηστο πακέτο ακολουθεί την ίδια ρύθμιση με το παράδειγμα, και λειτουργεί όπως είναι στο έργο frontend με Vite. Ωστόσο, όταν εισάγω αυτό το module στο backend (Nest + SWC), το σενάριο ανάπτυξης αποτυγχάνει με Απροσδόκητος χαρακτήρας 'export'.
Το δημιουργημένο αρχείο main.js προσπαθεί να κάνει require από το κοινό πακέτο, αλλά είναι μόνο ένα αρχείο typescript (όπως στο παράδειγμα). Όλα τα παραδείγματα και άλλα ζητήματα χρησιμοποιούν Next.js, το οποίο έχει μια επιλογή ρύθμισης transpilePackages που κάνει ακριβώς αυτό που προσπαθώ να επιτύχω. Υπάρχει μια εναλλακτική για το transpilePackages που να λειτουργεί εκτός Next.js; (κατά προτίμηση με SWC)
Πράγματα που έχω δοκιμάσει:
- συμπεριλαμβάνοντας το κοινό πακέτο στο
tsconfig.json - συμπεριλαμβάνοντας το στο
webpack.config.js(αλλάζοντας το πρότυπο εξαιρέσεων τουswc-loaderγια να συμπεριλάβει αυτόν τον φάκελο από τα node_modules)
Υπάρχει ένα πολύ παρόμοιο πρόβλημα με το δικό μου, αλλά εξακολουθεί να μην έχει επιλυθεί και χρησιμοποιεί το Next.js.
Απάντηση #1
Είχα το ίδιο πράγμα, ακολούθησα το https://turbo.build/repo/docs/handbook/publishing-packages/bundling και βοήθησε.
Όταν προσπαθούσα να κάνω το ίδιο με "build": "tsc" στο package.json του πακέτου μου, δεν λειτουργούσε σωστά, η αλλαγή σε "build": "tsup src/index.ts --format cjs,esm --dts" λειτούργησε καλύτερα τόσο για την εφαρμογή vite όσο και για το backend commonjs που έχω.
Απάντηση #2
Είχα το ίδιο πρόβλημα. Η συμπερίληψη του πακέτου στην ιδιότητα "include" στο tsconfig.json το διόρθωσε για μένα. Απλώς βεβαιωθείτε ότι δεν αποκλείετε ολόκληρο το φάκελο node_modules.
{
"compilerOptions": {...},
"include": ["node_modules/PROJECT"],
"exclude": ["node_modules(?!/PROJECT\b)(?:/.*)?"]
}
