Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
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, 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:
string
Array
): Path or glob of what to copystring
Array
): One or more destinations where to copystring
Function
): Change destination file or folder nameFunction
): 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.
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, fullPath) => `${name}-v1.${extension}`
}]
})
copy({
targets: [{
src: 'src/index.html',
dest: 'dist/public',
transform: (contents, filename) => 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: false
Copy items synchronous.
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
copySync: 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
FAQs
Copy files and folders using Rollup
The npm package rollup-plugin-copy receives a total of 0 weekly downloads. As such, rollup-plugin-copy popularity was classified as not 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
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.