Wondering what’s next for npm?Check out our public roadmap! »

    rollup-plugin-copy
    TypeScript icon, indicating that this package has built-in type declarations

    3.4.0 • Public • Published

    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, fullPath) => `${name}-v1.${extension}`
      }]
    })
    Transform file contents
    copy({
      targets: [{
        src: 'src/index.html',
        dest: 'dist/public',
        transform: (contents, filename) => 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

    Install

    npm i rollup-plugin-copy

    DownloadsWeekly Downloads

    197,573

    Version

    3.4.0

    License

    MIT

    Unpacked Size

    15.6 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar