Файл вывода машинописного текста для файлов определений неверен

#javascript #typescript

Вопрос:

Я пытаюсь построить свой проект с файлами ts gt; js и файлами определения ts вместе с файлами js при компиляции.

В настоящее время файлы создаются правильно, но файлы .d.ts помещаются в dist/src папку с правильными путями. Как я могу заставить их быть скомпилированными рядом с их родителями js. например dist/components/Select/index.d.ts , а не неправильным способом: dist/src/components/Select/index.d.ts

пакет.json

 "build": "rm -rf dist amp;amp; npx tsc amp;amp; NODE_ENV=production babel src/components --out-dir dist --extensions '.tsx' --presets @babel/preset-typescript --presets @babel/preset-env --ignore __tests__,__snapshots__,__mocks__,stories.js,**/*.test.tsx",  

tsconfig.json

 {  "compilerOptions": {  "baseUrl": "./src",  "target": "es5",  "lib": ["dom", "dom.iterable", "esnext"],  "rootDirs": [  "src",  "stories",  "config"  ],  "allowJs": true,  "skipLibCheck": true,  "esModuleInterop": true,  "allowSyntheticDefaultImports": true,  "strict": true,  "forceConsistentCasingInFileNames": true,  "noFallthroughCasesInSwitch": true,  "module": "esnext",  "moduleResolution": "node",  "resolveJsonModule": true,  "jsx": "react-jsx",  // Ensure that .d.ts files are created by tsc, but not .js files  "declaration": true,  "emitDeclarationOnly": true,  // Ensure that Babel can safely transpile files in the TypeScript project  "isolatedModules": true,  "outDir": "./dist"  },  "include": ["./src/**/*"],  "exclude": [  "node_modules",  "dist",  "docs"  ] }  

встроенные файлы

 dist dist/FormGenerator dist/Input dist/Link dist/List dist/MoneyFormat dist/Select dist/Select/index.js dist/Select/Select.js dist/src dist/src/components dist/src/components/FormGenerator dist/src/components/Input dist/src/components/Link dist/src/components/List dist/src/components/MoneyFormat dist/src/components/Select dist/src/components/Select/index.d.ts dist/src/components/Select/Select.d.ts dist/src/components/Svg dist/src/components/TemplateComponent dist/src/components/Text dist/src/components/index.d.ts dist/src/themes dist/src/setupTests.d.ts dist/Svg dist/TemplateComponent dist/test-utils dist/Text dist/index.js  

структура корневой папки

 .github .husky .storybook .vscode dist node_modules reports src test-utils .codacy.yml .editorconfig .env .env.local .eslintignore .eslintrc .gitignore .npmrc .prettierignore .prettierrc jest.config.js package.json README.md setupFile.js tsconfig.json yarn.lock  

Комментарии:

1. Извините за пониженный голос. Если вы могли бы предоставить мне некоторую обратную связь, я с радостью обновлю вопрос. Поэтому, пожалуйста, дайте мне знать, как я могу его улучшить.

Ответ №1:

У вас есть какой-либо файл .ts за пределами директории src? Если это так, то компилятор также компилирует этот файл, и окончательная структура папок будет включать src.

Комментарии:

1. Спасибо! Я обновил вопрос, чтобы показать корневой каталог, там нет файлов ts. Хотя в test-utiles папке есть некоторые, которые вполне могут быть причиной проблемы. Я поиграю с этим.

2. у меня также есть тестовая папка за пределами src, но она добавлена в свойство «исключить» tsconfig.build.json. Таким образом, ts не будет компилировать тесты при сборке, так как тесты не нужны в окончательной сборке.