Copy files and folders using Rollup
npm install rollup-plugin-copy

Copy files and folders, with glob support.
``bashyarn
yarn add rollup-plugin-copy -D
Usage
`js
// 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' }
]
})
]
}
`$3
There are some useful options:
#### targets
Type:
Array | Default: []Array of targets to copy. A target is an object with properties:
- src (
string Array): Path or glob of what to copy
- dest (string Array): One or more destinations where to copy
- rename (string Function): Change destination file or folder name
- transform (Function): Modify file contentsEach object should have src and dest properties, rename and transform are optional. globby is used inside, check it for glob pattern examples.
##### File
`js
copy({
targets: [{ src: 'src/index.html', dest: 'dist/public' }]
})
`##### Folder
`js
copy({
targets: [{ src: 'assets/images', dest: 'dist/public' }]
})
`##### Glob
`js
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }]
})
`##### Glob: multiple items
`js
copy({
targets: [{ src: ['src/index.html', 'src/styles.css', 'assets/images'], dest: 'dist/public' }]
})
`##### Glob: negated patterns
`js
copy({
targets: [{ src: ['assets/images//', '!/.gif'], dest: 'dist/public/images' }]
})
`##### Multiple targets
`js
copy({
targets: [
{ src: 'src/index.html', dest: 'dist/public' },
{ src: 'assets/images/*/', dest: 'dist/public/images' }
]
})
`##### Multiple destinations
`js
copy({
targets: [{ src: 'src/index.html', dest: ['dist/public', 'build/public'] }]
})
`##### Rename with a string
`js
copy({
targets: [{ src: 'src/app.html', dest: 'dist/public', rename: 'index.html' }]
})
`##### Rename with a function
`js
copy({
targets: [{
src: 'assets/docs/*',
dest: 'dist/public/docs',
rename: (name, extension, fullPath) => ${name}-v1.${extension}
}]
})
`##### Transform file contents
`js
copy({
targets: [{
src: 'src/index.html',
dest: 'dist/public',
transform: (contents, filename) => contents.toString().replace('__SCRIPT__', 'app.js')
}]
})
`#### verbose
Type:
boolean | Default: falseOutput copied items to console.
`js
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
verbose: true
})
`#### hook
Type:
string | Default: buildEndRollup hook the plugin should use. By default, plugin runs when rollup has finished bundling, before bundle is written to disk.
`js
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
hook: 'writeBundle'
})
`#### copyOnce
Type:
boolean | Default: falseCopy items once. Useful in watch mode.
`js
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
copyOnce: true
})`
#### copySyncType:
boolean | Default: falseCopy items synchronous.
`js
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
copySync: true
})
`#### flatten
Type:
boolean | Default: trueRemove the directory structure of copied files.
`js
copy({
targets: [{ src: 'assets/*/', dest: 'dist/public' }],
flatten: false
})
``All other options are passed to packages, used inside:
- globby
- fs-extra copy function
MIT