2017-02-16 36 views
0

我想能夠刪除舊文件(特別是在最新的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 
     }) 
    ] 
}; 
+0

通常路徑與目錄名,即'輸出: path.resolve(__ dirname,'dist'),...' – redconservatory

回答

2

可以使用CleanWebpackPlugin:

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'] 
     }) 
     ] 
    } 
+0

在這種情況下,共享將被排除。但如果它改變呢? –

+0

完整的項目路徑,是否與項目的網頁包配置相關? –

+0

你的webpack配置通常在根目錄下(我的意思不是深度文件夾) – redconservatory