rollup-plugin-copy 是一个用于打包构建工具的插件,用于将指定的文件或目录从一个位置复制到另一个位置,支持glob。
安装
# yarn
yarn add rollup-plugin-copy -D
or
# npm
npm install rollup-plugin-copy -D
or
cnpm install rollup-plugin-copy -D
使用
// vite.config.js
import vue from '@vitejs/plugin-vue'
import copy from 'rollup-plugin-copy'
export default {
//...
plugins: [
vue(),
// copy({Object})
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' }
]
})
]
}
配置(Object)
- targets
Type:Array
| Default:[Object]
将文件复制到的目标位置。可以是一个字符串或字符串数组,也可以是一个包含 src 和 dest 属性的对象数组
Object:
Object.src (string)
: 要复制内容的路径
Object.dest (string)
: 要复制到的目标路径
Object.rename (string Function)
: 更改目标文件或文件夹的名称
Object.transform (Function)
: 修改文件内容
示例:
copy({
targets: [{
src: 'src/index.html',
dest: 'dist/public',
rename: (name, extension, fullPath) => `${name}-v1.${extension}`
transform: (contents, filename) => contents.toString().replace('__SCRIPT__', 'app.js')
}]
})
- verbose
是否在控制台输出详细的日志信息
Type:boolean
| Default:false
示例:
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
verbose: true
})
- hook
生命周期钩子,例如 buildStart、buildEnd、generateBundle、writeBundle 等。
Type:string
| Default:buildEnd
示例:
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
hook: 'generateBundle' // npm run build 的时候执行copy
})
- copyOnce
复制项目一次。在 watch 模式下有用。
Type:boolean
| Default:false
示例:
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
copyOnce: true
})
- flatten
是否删除复制文件的目录结构。
Type:boolean
| Default:true
示例:
copy({
targets: [{ src: 'assets/**/*', dest: 'dist/public' }],
flatten: false
})