Hash web包中的散列可以工作,但旧文件在每个构建中都会保留

Hash web包中的散列可以工作,但旧文件在每个构建中都会保留,hash,webpack,delete-file,cache-control,Hash,Webpack,Delete File,Cache Control,我希望能够删除旧文件(特别是那些在最新的webpack assets.json中找不到的文件)。由于创建了带有散列的新文件,它们不会替换旧文件,但同时我不能清除整个目录,因为不是所有文件都会被替换 我想知道,是否有一种方法可以在更新webpack assets.json后除去不在其中的文件。这是我的配置: var path = require('path'); var webpack = require('webpack'); var ChunksPlugin = require('webpac

我希望能够删除旧文件(特别是那些在最新的webpack assets.json中找不到的文件)。由于创建了带有散列的新文件,它们不会替换旧文件,但同时我不能清除整个目录,因为不是所有文件都会被替换

我想知道,是否有一种方法可以在更新
webpack assets.json
后除去不在其中的文件。这是我的配置:

var path = require('path');
var webpack = require('webpack');
var ChunksPlugin = require('webpack-split-chunks');
var AssetsPlugin = require('assets-webpack-plugin');
var glob = require('glob');
var assetsPluginInstance = new AssetsPlugin();
// TODO add prefixer for  >= IE9

var input_path  = __dirname + "/apps/*/index.js";
var output_path = __dirname +'/dist';

// Prepare project paths for multiple projects into entry_files
var projects = glob.sync(input_path);
var entry_files = {};
projects.map(function(project_dir, k){
          var split_name = project_dir.split("/");
          entry_files[split_name[split_name.length - 2]] = project_dir;
    });

module.exports = {
    devtool: 'cheap-module-eval-source-map',
    entry: entry_files,
    module: {
        loaders: [
            {
                test: /\.js$/,
                loaders: ['babel'],
                exclude: /node_modules/
            },
            {
                test: /\.scss/,
                loader: 'style-loader!css-loader?sourceMap!sass-loader?sourceMap'
            }
        ]
    },
    output: {
        path: output_path,
         filename:  '[name].min.[hash].js'
        // filename:  '[name].min.js'
    },
    watch: true,
    plugins: [
        assetsPluginInstance,
        new webpack.optimize.OccurrenceOrderPlugin(),
        new ChunksPlugin({
           to: 'common.[hash]',
           // to: 'common',
           test: [/node_modules/, /shared/] // or an array of regex
       })
    ]
};

您可以使用CleanWebPackagePlugin:

npm install clean-webpack-plugin --save-dev
然后将其添加到插件设置中:

   var CleanWebpackPlugin = require('clean-webpack-plugin');

   module.exports = {
      plugins: [
        new CleanWebpackPlugin(['dist', 'build'], {
          root: '/full/project/path',
          verbose: true, 
          dry: false,
          exclude: ['shared.js']
        })
      ]
    }

通常path与dirname一起使用,即
输出:{path:path.resolve(uu dirname,'dist'),…
在这种情况下,shared将被排除在外。但是如果它发生了变化怎么办?完整的项目路径是否与项目web包配置的位置相关?您的web包配置通常位于根级别(我的意思是不是文件夹深度)如果
shared
因为被排除在外而发生变化,我不相信它会得到
考虑