我正在使用clean-webpack-plugin
在构建之前删除/dist
文件夹,而仅在编译阶段使用Flow成功。
我遇到的问题是,即使Flow抛出错误,clean插件也会运行。
可以解决这个问题(我的意思是当出现编译错误时,不要删除“dist”文件夹)?
./ SRC / app.js
function init(a: number) {
//...
}
init("2");
./ webpack.config.json
const path = require("path");
const webpack = require("webpack");
const flowTypeLoaderPlugin = require("flowtype-loader/plugin");
const CleanWebpackPlugin = require("clean-webpack-plugin");
module.exports = [{
entry : "./src/app.js",
output : {
filename : "build.js",
path : path.resolve(__dirname, "dist")
},
module : {
loaders : [
/*{
test: /\.js$/,
enforce: "pre",
use: CleanWebpackPlugin(["dist"], {
root: "/dist",
verbose: true,
dry: true,
"watch": true
})
},*/
{
test : /\.js$/,
loader : "flowtype-loader",
enforce : "pre",
exclude : /node_modules/
},
{
test : /\.jsx?$/,
enforce : "pre",
loader : "remove-flow-types-loader",
include : path.join(__dirname, "src")
}
]
},
plugins : [
new flowTypeLoaderPlugin({cwd : path.resolve(__dirname, "src"), failOnError : true}),
//Empty "dist" folder
new CleanWebpackPlugin(["dist"], {
root: "/",
verbose: true,
dry: true,
"watch": true
})
]
}];
答案 0 :(得分:0)
可以解决的一种方法是通过添加" should-emit "来修改CleanWebpackPlugin的代码。条件。它对我有用,但我不确定它是否适用于所有可能的情况:
CleanWebpackPlugin.prototype.apply = function(compiler) {
var _this = this;
if (compiler === undefined) {
return clean.call(_this);
} else {
compiler.plugin("should-emit", compilation => {
if (_this.options.watch) {
compiler.plugin("compile", function(params) {
clean.call(_this);
});
} else {
return clean.call(_this);
}
});
}
};
这还要求您在webpack配置文件中使用另一个插件: NoEmitOnErrorsPlugin