Copy files and folders, with glob support.
# yarn yarn add rollup-plugin-copy -D # npm npm install rollup-plugin-copy -D// rollup.config.js import copy from 'rollup-plugin-copy' export default { input: 'src/index.js', output: { file: 'dist/app.js', format: 'cjs' }, plugins: [ copy({ targets: [ { src: 'src/index.html', dest: 'dist/public' }, { src: ['assets/fonts/arial.woff', 'assets/fonts/arial.woff2'], dest: 'dist/public/fonts' }, { src: 'assets/images/**/*', dest: 'dist/public/images' } ] }) ] }There are some useful options:
Type: Array | Default: []
Array of targets to copy. A target is an object with properties:
- src (
stringArray): Path or glob of what to copy - dest (
stringArray): One or more destinations where to copy - rename (
stringFunction): Change destination file or folder name - transform (
Function): Modify file contents
Each object should have src and dest properties, rename and transform are optional. globby is used inside, check it for glob pattern examples.
copy({ targets: [{ src: 'src/index.html', dest: 'dist/public' }] })copy({ targets: [{ src: 'assets/images', dest: 'dist/public' }] })copy({ targets: [{ src: 'assets/*', dest: 'dist/public' }] })copy({ targets: [{ src: ['src/index.html', 'src/styles.css', 'assets/images'], dest: 'dist/public' }] })copy({ targets: [{ src: ['assets/images/**/*', '!**/*.gif'], dest: 'dist/public/images' }] })copy({ targets: [ { src: 'src/index.html', dest: 'dist/public' }, { src: 'assets/images/**/*', dest: 'dist/public/images' } ] })copy({ targets: [{ src: 'src/index.html', dest: ['dist/public', 'build/public'] }] })copy({ targets: [{ src: 'src/app.html', dest: 'dist/public', rename: 'index.html' }] })copy({ targets: [{ src: 'assets/docs/*', dest: 'dist/public/docs', rename: (name, extension) => `${name}-v1.${extension}` }] })copy({ targets: [{ src: 'src/index.html', dest: 'dist/public', transform: (contents) => contents.toString().replace('__SCRIPT__', 'app.js') }] })Type: boolean | Default: false
Output copied items to console.
copy({ targets: [{ src: 'assets/*', dest: 'dist/public' }], verbose: true })Type: string | Default: buildEnd
Rollup hook the plugin should use. By default, plugin runs when rollup has finished bundling, before bundle is written to disk.
copy({ targets: [{ src: 'assets/*', dest: 'dist/public' }], hook: 'writeBundle' })Type: boolean | Default: false
Copy items once. Useful in watch mode.
copy({ targets: [{ src: 'assets/*', dest: 'dist/public' }], copyOnce: true })Type: boolean | Default: true
Remove the directory structure of copied files.
copy({ targets: [{ src: 'assets/**/*', dest: 'dist/public' }], flatten: false })All other options are passed to packages, used inside:
MIT