typescript - NPM სამუშაო სივრცის პროექტი Vite-ით, რომელიც აცილებს dist საქაღალდის საჭიროებას Vite-ის მშენებლობაში
მე მაქვს პროექტი მოდულით, რომელიც იყენებს სრულ გზის ექსპორტებს ინდექს ფაილების ნაცვლად.
პროექტი besteht 2 NPM სამუშაო სივრცისგან. ერთი არის core, ხოლო მეორე examples.
პრობლემა, რომელსაც ვცდილობ თავიდან ავიცილო, არის იმპორტის გზის იყოს როგორც @my-project/core/dist/plugins/Input
პრობლემა, რომლის წინაშეც ვიმყოფები არის ის, რომ მე შევძელი TypeScript-მა გამოამუშავებინოს შედეგი ისე, რომ TypeScript შეძლოს კომპილაცია dist გზა საჭიროების გარეშე, თუმცა Vite ვერ აშენებს, რადგან მას ეჩვენება, რომ ვერ პოულობს შესაბამის კოდს.
Error: [vite]: Rollup failed to resolve import "@my-project/core/plugins/Input"
Typescript სრულიად კარგია, რაც გამოწვევად ითვლებოდა, მაგრამ თითქოს მოაგვარეს ჩემი package.json-ში შემდეგის დამატებით
"typesVersions": {
"*": {
"*": [
"./dist/*"
]
}
},
მე ვვარაუდობ, რომ ეს რაღაც კონკრეტულად ჩემს Vite კონფიგურაციაზეა, რომელიც ასე გამოიყურება:
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig(() => {
return {
build: {
outDir: 'build',
},
plugins: [
react({
// Use React plugin in all *.jsx and *.tsx files
include: '**/*.{jsx,tsx}',
}),
],
server: {
port: 3000,
host: true,
},
preview: {
port: 4000,
},
};
});
მე საკუთარ თავს ვხეტიალობდი სხვადასხვა გზების გამოსაცდელად, რომ ეს მუშაობდეს და ახლა ნახევრად გზაზე ვარ TypeScript-ს შეკრებამდე. მედიაში იმედი მაქვს, რომ ვინმე შეძლებს მიუთითოს, ალბათ მარტივ შეცდომაზე, რომელსაც ვაკეთებ, რათა Vite-იც მუშაობდეს.
პასუხი #1
ცადეთ ექსპორტის გზების დაყენება იმ package.json-ში, რომლის იმპორტიც გსურთ. რაღაც მსგავსად:
{
"name": "@my-project/core",
...
"exports": {
".": "./dist/index.js",
"./plugins/Input": "./dist/plugins/Input",
}
}
შემდეგ თქვენ უნდა შეძლოთ ქვესაქაღალდის იმპორტი შემდეგნაირად
import { stuff } from '@my-project/core/plugins/Input'
უყველაფერს აქვს მნიშვნელობა, რომ თუ ეს პაკეტი საზოგადოებისთვისაა განკუთვნილი, მაშინ შესაძლოა გინდათ დაამატოთ ESM და CJS ექსპორტის გზები და დაადგინოთ ორივე სეტების გამომავალი შედეგი:
".": {
"import": "./dist/index.js",
"require": "./dist/cjs/index.cjs"
},
მითხარი, როგორ გამოდის!
