I'm building a package using React, Typescript, Rollup, rollup-plugin-typescript2. While the generated JS files are fine, the generated definition files are in the wrong directory.
Current result:
MyLib
|_\lib
| |_index.js
| |_index.esm.js
| |_\src
| |_index.d.ts
| |_\components
| |_Button.d.ts
| |_WafeForm.d.ts
|
|_\src
|_index.ts
|_\components
|_Button.tsx
|_WaveForm.tsx
Expected result:
MyLib
|_\lib
| |_index.js
| |_index.esm.js
| |_index.d.ts
| |_\components
| |_Button.d.ts
| |_WafeForm.d.ts
|
|_\src
|_index.ts
|_\components
|_Button.tsx
|_WaveForm.tsx
This is my rollup.config.js:
import peerDepsExternal from 'rollup-plugin-peer-deps-external';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import typescript from 'rollup-plugin-typescript2';
const packageJson = require('./package.json');
export default {
input: 'src/index.ts',
output: [
{
file: packageJson.main,
format: 'cjs',
sourcemap: true
},
{
file: packageJson.module,
format: 'esm',
sourcemap: true
}
],
plugins: [
peerDepsExternal(),
resolve(),
commonjs(),
typescript({ useTsconfigDeclarationDir: true })
],
external: ['styled-components']
};
And my tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"outDir": "lib",
"lib": ["dom", "dom.iterable", "esnext"],
"declaration": true,
"declarationDir": "lib",
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": ["src"],
"exclude": ["node_modules", "lib"]
}