webpack4 使用报错 TypeError: CleanWebpackPlugin is not a constructor

原文链接:https://blog.csdn.net/yheartbeats/article/details/103031162
最近在跟着webpack官方文档练习,由于官方文档并没有及时更新,遇到了一些些问题,查了很多文档…
这是我的一点小总结。

执行npx webpack显示的错误信息:

TypeError: CleanWebpackPlugin is not a constructor
at Object.<anonymous> (D:\webpack-demo\webpack.config.js:11:9)
    at Module._compile (D:\webpack-demo\node_modules\v8-compile-cache\v8-compile-cache.js:192:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)

原因分析
根据官方文档的解释,clean-webpack-plugin插件将会默认移除webpack的output.path目录下的所有文件,以及每次构建之后所有未使用的webpack资源。如果你使用webpack版本高于4,那么意味着在<PROJECT_DIR>/dist/目录下的所有文件会被默认清除,当然你可以使用cleanOnceBeforeBuildPatterns来重写这一行为。例如:

new CleanWebpackPlugin({
    // 默认: ['**/*'],cleanOnceBeforeBuildPatterns模式是相对于webpack的output.path。
    // 如果output.path之外使用绝对路径path.join(process.cwd(), 'build/**/*')
    // 需要首先运行dry: true来确保删除没有任何意外
    cleanOnceBeforeBuildPatterns: ['**/*', '!static-files*']
})

错误写法一

const CleanWebpackPlugin = require("clean-webpack-plugin");
 
plugins: [
    new CleanWebpackPlugin(['dist'])
]

错误写法二

const CleanWebpackPlugin = require("clean-webpack-plugin");

plugins: [
    new CleanWebpackPlugin(['dist'], {
        root: path.resolve(__dirname, '../'),   //根目录
    })
]

正确写法

const { CleanWebpackPlugin } = require("clean-webpack-plugin");
 
plugins: [
    new CleanWebpackPlugin()
]
 

注意:
plugin插件,一般首字母都大写
现在的版本不用指定文件路径了,直接调用new CleanWebpackPlugin()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值