#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 не будет компилировать тесты при сборке, так как тесты не нужны в окончательной сборке.