Skip to content

syJSdev/rollup-plugin-copy-merge

Repository files navigation

rollup-plugin-copy

Build Status Codecov

Copy files and folders, with glob support.

Installation

# yarn yarn add rollup-plugin-copy -D # npm npm install rollup-plugin-copy -D

Usage

// 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' } ] }) ] }

Configuration

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 contents

Each object should have src and dest properties, rename and transform are optional. globby is used inside, check it for glob pattern examples.

File
copy({ targets: [{ src: 'src/index.html', dest: 'dist/public' }] })
Folder
copy({ targets: [{ src: 'assets/images', dest: 'dist/public' }] })
Glob
copy({ targets: [{ src: 'assets/*', dest: 'dist/public' }] })
Glob: multiple items
copy({ targets: [{ src: ['src/index.html', 'src/styles.css', 'assets/images'], dest: 'dist/public' }] })
Glob: negated patterns
copy({ targets: [{ src: ['assets/images/**/*', '!**/*.gif'], dest: 'dist/public/images' }] })
Multiple targets
copy({ targets: [ { src: 'src/index.html', dest: 'dist/public' }, { src: 'assets/images/**/*', dest: 'dist/public/images' } ] })
Multiple destinations
copy({ targets: [{ src: 'src/index.html', dest: ['dist/public', 'build/public'] }] })
Rename with a string
copy({ targets: [{ src: 'src/app.html', dest: 'dist/public', rename: 'index.html' }] })
Rename with a function
copy({ targets: [{ src: 'assets/docs/*', dest: 'dist/public/docs', rename: (name, extension) => `${name}-v1.${extension}` }] })
Transform file contents
copy({ targets: [{ src: 'src/index.html', dest: 'dist/public', transform: (contents) => contents.toString().replace('__SCRIPT__', 'app.js') }] })

verbose

Type: boolean | Default: false

Output copied items to console.

copy({ targets: [{ src: 'assets/*', dest: 'dist/public' }], verbose: true })

hook

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' })

copyOnce

Type: boolean | Default: false

Copy items once. Useful in watch mode.

copy({ targets: [{ src: 'assets/*', dest: 'dist/public' }], copyOnce: true })

flatten

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:

Original Author

Cédric Meuter

License

MIT

About

Copy & Merge files and folders using Rollup

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •