You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite构建后复制文件至WordPress目录及修改哈希文件名方法咨询

Vite构建后自动复制文件+固定文件名配置方案

一、实现Vite构建后自动复制文件

方案1:用vite-plugin-copy插件(推荐)

先安装插件:

npm install vite-plugin-copy --save-dev

在vite.config.js里配置,指定钩子为writeBundle(构建完成、文件写入磁盘后执行):

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import copy from 'vite-plugin-copy'
import path from 'path'

export default defineConfig({
  plugins: [
    vue(),
    copy({
      targets: [
        {
          src: path.resolve(__dirname, 'dist/**/*'), // 匹配dist下所有文件
          dest: path.resolve(__dirname, '../wordpress project/target') // WP的target目录
        }
      ],
      hook: 'writeBundle', // 核心:确保构建完成后再复制
      overwrite: true // 覆盖目标目录已有文件
    })
  ]
})

方案2:自定义Vite钩子(无需额外插件)

直接在配置里用buildEnd钩子,结合fs-extra处理复制(需先安装npm install fs-extra --save-dev):

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import fs from 'fs-extra'
import path from 'path'

export default defineConfig({
  plugins: [
    vue(),
    {
      name: 'post-build-copy',
      async buildEnd() {
        const distDir = path.resolve(__dirname, 'dist')
        const targetDir = path.resolve(__dirname, '../wordpress project/target')
        
        try {
          await fs.copy(distDir, targetDir, { overwrite: true })
          console.log('Vite构建文件已成功复制到WP目录!')
        } catch (err) {
          console.error('复制失败:', err)
        }
      }
    }
  ]
})

二、修改Vite构建生成固定文件名(移除哈希)

在vite.config.js的build.rollupOptions.output里配置命名规则:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  build: {
    rollupOptions: {
      output: {
        // 入口JS文件固定名称
        entryFileNames: 'js/vite-app.js',
        // 静态资源命名:单独给CSS指定固定名称,其他资源按需处理
        assetFileNames: ({name}) => {
          if (name?.endsWith('.css')) {
            return 'css/vite-app-styles.css'
          }
          // 图片、字体等资源可保留哈希,避免缓存问题
          return 'assets/[name].[hash][extname]'
        },
        // 分包文件如果存在,也可以设置固定名称
        chunkFileNames: 'js/vite-chunk.js'
      }
    },
    // 可选:如果项目只有一个CSS文件,关闭CSS代码分割更稳妥
    cssCodeSplit: false
  }
})

如果项目结构简单,也可以直接写死所有资源的固定名称,但要注意多资源会覆盖的问题,按需调整即可。

内容的提问来源于stack exchange,提问作者asteoff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:50:22