Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to prevent tests being bundled by rollup?

I am building a react component package and want to exclude my tests folder from being bundled in my dist file that is built from rollup.

My file structure looks like this after running rollup -c

.
├── dist
│   ├── index.js
│   ├── tests
│      ├── index.test.js
├── src
│   ├── index.tsx
│   ├── tests
│      ├── index.test.tsx

My rollup config looks like this:

import typescript from 'rollup-plugin-typescript2'

import pkg from './package.json'

export default {
  input: 'src/index.tsx',
  output: [
    {
      file: pkg.main,
      format: 'cjs',
      exports: 'named',
      sourcemap: true,
      strict: false
    }
  ],
  plugins: [typescript()],
  external: ['react', 'react-dom', 'prop-types']
}

How can I exclude my tests directory from being bundled into the dist file when runnning rollup?

like image 204
Stretch0 Avatar asked Dec 17 '20 19:12

Stretch0


2 Answers

The accepted answer works if you don't care about type checking your test files. If you do, instead of excluding them in tsconfig.json, do that exclusion as a param to the rollup typescript plugin in rollup.config.js.

plugins: [
  /* for @rollup/plugin-typescript */
  typescript({
    exclude: ["**/__tests__", "**/*.test.ts"]
  })

  /* or for rollup-plugin-typescript2 */
  typescript({
    tsconfigOverride: {
      exclude: ["**/__tests__", "**/*.test.ts"]
    }

  })
]
like image 150
hello_luke Avatar answered Sep 28 '22 08:09

hello_luke


You can exclude tests in tsconfig.json e.g.

"exclude": [
    "**/tests",
    "**/*.test.js",
  ]
like image 29
Porok12 Avatar answered Sep 28 '22 08:09

Porok12