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

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


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 表示“安静模式”,不会提示确认删除。