需求:我在项目中写了一套业务组件库,然后写了一个README.md文档,解释组件的用法,以及相关组件抛出的方法如何使用的介绍;然后我需要对这套业务组件进行打包,希望打包后自动将README.md文件复制到打包后的文件中。
解决方案:
vite-plugin-static-copy 插件
下载:
pnpm install vite-plugin-static-copy
使用:
// vite.config.js / vite.config.ts
import { viteStaticCopy } from 'vite-plugin-static-copy'
export default {
plugins: [
viteStaticCopy({
targets: [
{
src: './README.md',
dest: './'
}
]
})
]
}
我的vite配置源代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path';
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import {viteStaticCopy} from 'vite-plugin-static-copy'
const pathResolve = (dir: string) => {
return resolve(__dirname, '.', dir);
};
const alias: Record<string, string> = {
'@': pathResolve('./src'),
};
// https://vitejs.dev/config/
export default defineConfig({
base:'./',
build:{
outDir: 'HModules', //输出文件名称
lib:{
entry: resolve(__dirname, './index.ts'), //指定组件编译入口文件
name: 'h-module',
fileName: 'h-module'
},//库编译模式配置
rollupOptions: {
external: ['vue'],
output: {
// format: 'es', // 默认es,可选 'amd' 'cjs' 'es' 'iife' 'umd' 'system'
exports: 'named',
globals: {
vue:'Vue',
},
}
},
minify: 'terser', // Vite 2.6.x 以上需要配置 minify: "terser", terserOptions 才能生效
terserOptions: { // 在打包代码时移除 console、debugger 和 注释
compress: {
drop_console: true, // 生产环境时移除console
drop_debugger: true // 生产环境时移除debugger
},
format: {
comments: false // 删除注释comments
}
}
},
plugins: [
vue(),
AutoImport({
resolvers: [ElementPlusResolver()],
}),
Components({
resolvers: [ElementPlusResolver()],
}),
viteStaticCopy({
targets: [
{ src: './README.md', dest: './' },//打包后将README.md文件复制到打包后的目录文件中
],
})
],
resolve: {
alias,
},
})