vue.config.js中使用chainWebpack打包,如何设置忽略某个文件夹不被打包

发布于:2025-07-28 ⋅ 阅读:(19) ⋅ 点赞:(0)

vue.config.js中使用chainWebpack打包,如何设置忽略某个文件夹不被打包

vue.config.js中使用webpack打包项目,使用的是chainWebpack的API写法,如下:

chainWebpack: (config) => {
    config.module
      .rule('md')
      .test(/\.md/)
      .use('vue-loader')
      .loader('vue-loader')
      .end()
      .use('vue-markdown-loader')
      .loader('vue-markdown-loader/lib/markdown-compiler')
      .options({
        raw: true,
      })

vue版本是2x,vue CLI版本是5.0x,想让webpack打包时忽略某个文件夹,可以修改 WebpackCopyPlugin 实现。

禁用 CopyPlugin 复制特定文件夹

写法如下:
Vue CLI 默认会将 public/ 下的文件复制到 dist/,先移除默认配置,再重新配置

 //设置webpack打包忽略文件
   const CopyWebpackPlugin = require('copy-webpack-plugin')
   // 移除默认的 CopyWebpackPlugin 配置
   config.plugins.delete('copy')
   // 重新配置 CopyWebpackPlugin,排除特定文件夹
   config.plugin('copy').use(CopyWebpackPlugin, [
     [
       {
         from: 'public',
         to: '[path][name][ext]',
         globOptions: {
           ignore: [
             '**/demo/**', // 忽略 public/demo/ 目录
             '**/*.test.*', // 忽略所有测试文件
           ],
         },
       },
     ],
   ])

测试后发现上面的办法会出现问题,确实忽略了demo目录,但是dist中却出现了public目录,并没有将public文件夹里的东西复制到dist目录下。

最后还是用了简单粗暴的方法,通过脚本在构建完成后手动删除demo目录,直接使用 Windows 的命令。
package.json中:

{
  "scripts": {
    "build": "vue-cli-service build && rmdir /s /q dist\\demo"
  }
}

  • rmdir /s /q 是 Windows 中删除目录的命令:
  • /s 表示删除目录树(包括目录下的所有文件和子目录)。
  • /q 表示“安静模式”,不会提示确认删除。

网站公告

今日签到

点亮在社区的每一天
去签到