首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当流编译成功时,如何运行干净的webpack插件?

当流编译成功时,如何运行干净的webpack插件?
EN

Stack Overflow用户
提问于 2017-05-10 12:02:16
回答 1查看 938关注 0票数 1

我使用clean-webpack-plugin在构建之前删除/dist文件夹,只有在编译阶段使用Flow success时才使用。

我遇到的问题是,即使流抛出错误,干净的插件也会运行。

这是否有可能解决这个问题(我的意思是,当有编译错误时,不要删除"dist“文件夹)?

./src/app.js

代码语言:javascript
复制
function init(a: number) {
    //...
}
init("2");

./webpac.config.json

代码语言:javascript
复制
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
        })
    ]
}];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 13:21:09

解决这一问题的一种方法是通过添加“应该发出”条件来修改CleanWebpackPlugin的代码。它对我很有效,但我不确定它是否适用于每一种可能的情况:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43891937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档