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打包时忽略某个文件夹,可以修改 Webpack 的 CopyPlugin 实现。
禁用 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 表示“安静模式”,不会提示确认删除。