webpack2利用插件clean-webpack-plugin来清除dist文件夹中重复的文件

配置文件如下

/**
 * Created by oufeng on 2017/5/6.
 */
const webpack = require(‘webpack‘);
const path = require(‘path‘);
const ExtractTextPlugin = require(‘extract-text-webpack-plugin‘);

module.exports = {
    entry: {
        main: ‘./app/index.js‘,
        vendor: [‘moment‘]
    },
    output: {
        filename: ‘[name].[chunkhash].js‘,
        path: path.resolve(__dirname, ‘dist‘)
    },
    module:{
        rules:[
            {
                test: /\.css$/,
                use: ExtractTextPlugin.extract({
                    use: ‘css-loader‘
                })
            },
            {
                test: /.woff|.woff2|.svg|.eot|.ttf/,
                use: ‘url-loader?prefix=font/&limit=10000‘
            }
        ]
    },
    plugins: [
        new ExtractTextPlugin(‘styles.css‘),
        new webpack.optimize.CommonsChunkPlugin({
            name: ‘vendor‘,
            minChunks: function (module) {
                // 该配置假定你引入的 bootstrap 存在于 node_modules 目录中
                return module.context && module.context.indexOf(‘node_modules‘) !== -1;
            }
        }),
        //为了避免vendor.*.js的hash值发生改变需要输出一个manifest.*.js文件
        new webpack.optimize.CommonsChunkPlugin({
            name: ‘manifest‘ //But since there are no more common modules between them we end up with just the runtime code included in the manifest file
        })
    ]
};

第一次运行  npm run build (webpack)时

dist的文件夹是这样的:

第二次 修改一下 "./app/index.js"的内容 再 运行 npm run build

dist的文件夹是这样的: main.*.js和manifest.*.js都重复增加了一次。

第三次 修改一下 "./app/index.js"的内容 再 运行 npm run build

dist的文件夹是这样的: main.*.js和manifest.*.js又重复增加了一次。

来到这里楼主表示很无语啊,我run build的时候能不能把 之前的main.*.js和manifest.*.js都删除一次昵,只保留公共的vendor.*.js文件就好啦。

于是使用Googel大法,发现有一个插件叫clean-webpack-plugin可以满足我的需求,而且简单易用。

//安装插件
npm imstall --save-dev clean-webpack-plugin 
//引入插件
const CleanWebpackPlugin = require(‘clean-webpack-plugin‘);
//webpack.config.js中添加CleanWebpackPlugin插件
/**
 * Created by oufeng on 2017/5/6.
 */
const webpack = require(‘webpack‘);
const path = require(‘path‘);
const ExtractTextPlugin = require(‘extract-text-webpack-plugin‘);
const CleanWebpackPlugin = require(‘clean-webpack-plugin‘);

module.exports = {
    entry: {
        main: ‘./app/index.js‘,
        vendor: [‘moment‘]
    },
    output: {
        filename: ‘[name].[chunkhash].js‘,
        path: path.resolve(__dirname, ‘dist‘)
    },
    module:{
        rules:[
            {
                test: /\.css$/,
                use: ExtractTextPlugin.extract({
                    use: ‘css-loader‘
                })
            },
            {
                test: /.woff|.woff2|.svg|.eot|.ttf/,
                use: ‘url-loader?prefix=font/&limit=10000‘
            }
        ]
    },
    plugins: [
        new ExtractTextPlugin(‘styles.css‘),
        new webpack.optimize.CommonsChunkPlugin({
            name: ‘vendor‘,
            minChunks: function (module) {
                // 该配置假定你引入的 bootstrap 存在于 node_modules 目录中
                return module.context && module.context.indexOf(‘node_modules‘) !== -1;
            }
        }),
        //为了避免vendor.*.js的hash值发生改变需要输出一个manifest.*.js文件
        new webpack.optimize.CommonsChunkPlugin({
            name: ‘manifest‘ //But since there are no more common modules between them we end up with just the runtime code included in the manifest file
        }),
        new CleanWebpackPlugin(
            [‘dist/main.*.js‘,‘dist/manifest.*.js‘,],  //匹配删除的文件
            {
                root: __dirname,                 //根目录
                verbose:  true,                  //开启在控制台输出信息
                dry:      false                  //启用删除文件
            }
        )
    ]
};

这样的配置之后,无论怎么执行多少次的npm run build 后dist的目录都是这个样子的。

时间: 2024-08-27 05:00:00

webpack2利用插件clean-webpack-plugin来清除dist文件夹中重复的文件的相关文章

【Java】利用ant插件压缩文件夹及其所有子文件与子文件夹

如果在Java要压缩一个文件夹及其所有子文件与子文件夹,可以利用到Apache公司提供的ant插件.其实也就是一个jar包. 比如,如果要把f:\bb下的所有文件,压缩成一个f:\bb.zip,如下图: 首先先到Apache的官网,下载ant插件,地址:http://ant.apache.org/bindownload.cgi(点击打开链接) 下载解压之后,取走其中的apache-ant-1.9.4\lib下的ant.jar放到你的java工程就行: 比如拷贝到你的java工程,目录结构如下图,

利用java.io.File类实现遍历本地磁盘上指定盘符或文件夹的所有的文件

2016-11-18 这是本人的第一篇随笔博客,纠结了半天还是选择自己学的时候比较用心的一些知识点上.利用java.io.File类指定本地的文件夹进行遍历所有的文件. package org.lxm.filedemo; import java.io.File; import java.util.Scanner; /* * 本程序是将某个盘的所有文件夹及其文件全部调出来的操作 */ public class FileAllDemo { public static void main(String

【Java】利用文件输入输出流完成把一个文件夹内的所有文件拷贝的另一的文件夹的操作

一.基本目标 使用Java完成如下的操作: 把一个文件夹内的所有文件拷贝的另一的文件夹,例如,在F盘中有a与b两个文件夹: f:/a里面有一堆文件,运行Java程序之后就会全部复制到f:/b,并且完成重命名,在所有文件之前加rename_的前缀,如果里面有文件夹,则文件夹不重命名,里面的文件进行重命名,同样在所有文件之前加rename_的前缀: 二.制作过程 1.首先主函数非常简单,就是调用了上面FileTest类中的copyFolder函数 public class FileCopy { pu

利用python找出两文件夹里相同的文件并保存在新的文件夹下(分三种情况)

原文件夹A,B,新文件夹C,下图中的情况以图片为例 A:00001.jpg  00002.jpg   00003.jpg  00147.jpg B : 00001.jpg  000000002.jpg   00147.json 第一种情况:找出两文件夹下相同内容的文件,保存并输出到文件夹C 思路:判断内容是否一致,因此需要读取整个文件,判断两者是否一样 由于文件内容错综复杂,而其md5是唯一的,如果两者内容一致,则两者的md5值应该为一样.由于图片是二进制存储,在读取时采用'rb'.这里是对文件

Windows利用文件夹映射来同步文件

在windows服务器上有时有这样的需求: 你的文件在f:\test中,但由于其它原因用户访问的是e:\test,如果又希望e:\test 中的文件与f:\test的保持同步,除了用同步软件来做外,可以用windows 的文件夹映射来做 mklink /J "e:\test" "f:\test" "e:\test" 这个文件夹事先不能存在,是要创建的目标文件夹(映射的) 现在不管是在f:\test还是在e:\test创建或修改文件,在另外一个文件

利用Io流实现格式化文件夹

package homework_8_1; import java.io.File;import java.util.Scanner; /* * 使用递归调用将指定的文件拷贝到创建的路径下 * 1.写一个递归的方法,判断是文件还是文件夹,然后拷贝到创建的文件夹中 */ public class HomeWork_8_1_CopyFile { public static void copyFile(File fu ,File zi){ //判断该文件是否存在 if(!zi.exists()){ z

清除缓存,,计算文件夹大小

#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // //    NSLog(@"缓存文件大小为%@",[NSString stringWithFormat:@"%0.2fM",[self folderSizeAtPath:[N

php:利用插件uploadify完成ajax效果的图片上传

可选项需要参数类型 参数名字 解释(布尔型) auto 当文件被添加到队列时,自动上传.(字符串) buttonImg 浏览按钮的背景图片路径.(字符串)   buttonText  默认在按钮上显示的文本.(字符串)  cancelImg    取消按钮的背景图片路径.(字符串)   checkScript   用以检查服务器上已存在文件的后台脚本的路径.[译者注:应该是ajax方式](字符串)   displayData   在上传过程中显示在队列里的数据类型.(字符串)   express

利用插件分页

利用插件分页:   <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %> <webdiyer:AspNetPager ID="AspNetPager1" runat="server" AlwaysShow="true" UrlPaging="t