2017-02-16 7 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: 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

Конфигурация вашего веб-пакета обычно находится на корневом уровне (не в падах, я имею в виду) – redconservatory

Смежные вопросы