Security News
ESLint is Now Language-Agnostic: Linting JSON, Markdown, and Beyond
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
rollup-plugin-copy
Advanced tools
The rollup-plugin-copy package is a Rollup plugin that allows you to copy files and folders as part of your build process. This can be useful for tasks such as copying static assets, configuration files, or other resources that need to be included in your final build output.
Copying Files
This feature allows you to copy individual files or patterns of files from a source directory to a destination directory. In this example, all files in the 'src/assets' directory are copied to the 'dist/assets' directory.
const copy = require('rollup-plugin-copy');
module.exports = {
input: 'src/index.js',
output: {
file: 'dist/bundle.js',
format: 'cjs'
},
plugins: [
copy({
targets: [
{ src: 'src/assets/*', dest: 'dist/assets' }
]
})
]
};
Copying Folders
This feature allows you to copy entire folders from a source directory to a destination directory. In this example, the 'src/config' folder is copied to the 'dist/config' folder.
const copy = require('rollup-plugin-copy');
module.exports = {
input: 'src/index.js',
output: {
file: 'dist/bundle.js',
format: 'cjs'
},
plugins: [
copy({
targets: [
{ src: 'src/config', dest: 'dist/config' }
]
})
]
};
Transforming Files
This feature allows you to transform the contents of files as they are copied. In this example, the 'src/config.json' file is copied to 'dist/config.json' with all instances of 'foo' replaced with 'bar'.
const copy = require('rollup-plugin-copy');
module.exports = {
input: 'src/index.js',
output: {
file: 'dist/bundle.js',
format: 'cjs'
},
plugins: [
copy({
targets: [
{ src: 'src/config.json', dest: 'dist/config.json', transform: (contents) => contents.toString().replace(/foo/g, 'bar') }
]
})
]
};
The copy-webpack-plugin is a similar plugin for Webpack that copies files and directories during the build process. It offers similar functionality to rollup-plugin-copy but is designed to work with Webpack instead of Rollup.
The gulp-copy package is a Gulp plugin that allows you to copy files and directories as part of your Gulp build process. It provides similar functionality to rollup-plugin-copy but is intended for use with Gulp.
The grunt-contrib-copy package is a Grunt plugin that copies files and directories as part of your Grunt build process. It offers similar functionality to rollup-plugin-copy but is designed for use with Grunt.
Copy files and folders using Rollup.
This plugin is useful when you want to copy some files or folders before bundling.
yarn add rollup-plugin-copy -D
# or
npm install rollup-plugin-copy --save-dev
// 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/migrations',
'src/index.html'
],
outputFolder: 'dist'
})
]
}
There are some useful options:
An array or an object with paths of files and folders to be copied. Default is []
.
copy({
targets: ['src/assets', 'src/index.html'],
outputFolder: 'dist'
})
copy({
targets: {
'src/assets': 'dist/public/assets',
'src/index.html': 'dist/public/index.html',
'src/favicon.ico': ['dist/favicon.ico', 'build/favicon.ico'],
'src/images': ['dist/images', 'build/images']
}
})
Note: if an array, outputFolder is required to be set
Note: if an object, multiple destinations can be set using array syntax
Folder where files and folders will be copied. Required to be set when targets is an array.
copy({
targets: ['src/assets', 'src/index.html'],
outputFolder: 'dist/public'
})
Note: only used when targets is an array
Output copied files and folders to console. Default is false
.
copy({
targets: ['src/assets', 'src/index.html'],
outputFolder: 'dist',
verbose: true
})
Warn if target file or folder doesn't exist. Default is false
.
copy({
targets: ['src/assets', 'src/index.html'],
outputFolder: 'dist',
warnOnNonExist: true
})
Set which rollup hook the plugin should use. Default is buildEnd
.
copy({
targets: ['src/assets', 'src/index.html'],
outputFolder: 'dist',
hook: 'generateBundle'
})
All other options are passed directly to fs-extra copy function, which is used inside.
MIT
FAQs
Copy files and folders using Rollup
The npm package rollup-plugin-copy receives a total of 348,761 weekly downloads. As such, rollup-plugin-copy popularity was classified as popular.
We found that rollup-plugin-copy demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
Security News
Members Hub is conducting large-scale campaigns to artificially boost Discord server metrics, undermining community trust and platform integrity.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.