我正在使用 CopyWebpackPlugin 将静态文件复制到分布式文件夹,但是 CleanWebpackPlugin 在我使用--watch模式时将其删除。因此,第一次复制文件时,第二次删除文件而不是重新复制。
<script src="~/Content/vendor/bootstrap/js/bootstrap.min.js"></script>
<script src="~/Scripts/jqBootstrapValidation.js"></script>
<script src="~/Content/vendor/jquery/jquery.min.js"></script>
<script src="~/Scripts/contact_me.js"></script>
这两个模块可以同时使用吗?
答案 0 :(得分:1)
我终于创建了自己的webpack插件。
const shell = require('shelljs')
const path = require('path');
function resolvePath(dir) {
return path.join(__dirname, '../../../', dir);
}
module.exports = class CleanPlugin {
// Define `apply` as its prototype method which is supplied with compiler as its argument
apply(compiler) {
// Specify the event hook to attach to
compiler.hooks.emit.tapAsync(
'CleanPlugin',
(compilation, callback) => {
let command = `rm -rf ${resolvePath("cordova/www")}/*.json`
shell.exec(command)
callback()
}
)
}
}
并按如下所示使用它:
// require the module
const CleanPlugin = require('./webpack-plugins/clean-plugin/clean-plugin-class')
// inject in plugins array in webpack config file
new CleanPlugin()
如您所见,它仅在每次重建时都运行一个shell命令(甚至在监视模式下)。这个shell命令非常具体,我可以根据需要进行管理。
如果您有多个或许多Shell命令,则可以使用外部文件并将所有逻辑放在这里。
答案 1 :(得分:0)
显然,CopyWebpackPlugin
复制的文件被视为过期文件并被删除。这对我来说可以跳过清理由CopyWebpackPlugin
复制的文件:
new CleanWebpackPlugin({
cleanStaleWebpackAssets: false,
}),