Ответ 1
В этих целях есть clean-webpack-plugin, или вы можете написать простой bash
script для npm
:
"scripts": {
"build": "rm -r dist/* && webpack -p",
"clean": "rm -r dist/*"
}
Я ищу информацию о том, как удалить старые файлы, загруженные в webpack. Вот моя текущая конфигурация webpack:
var path = require('path');
var webpack = require('webpack');
module.exports = {
debug: false,
outputPathinfo: true,
displayErrorDetails: true,
context: __dirname,
entry: {
common: ['./src/common.coffee'],
a: './src/a.cjsx',
b: './src/b.cjsx'
},
output: {
filename: '[name]-[chunkhash].js',
chunkFileName: '[name].[chunkhash].js',
path: path.join(__dirname, 'js')
},
plugins: [
new webpack.optimize.CommonsChunkPlugin('common', 'common-[chunkhash].js'),
new webpack.optimize.UglifyJsPlugin({
compress: { warnings: false }
})
],
module: {
preLoaders: [
{
test: /\.coffee$/,
exclude: /node_modules/,
loader: 'coffeelint-loader'
}
],
loaders: [
{ test: /\.coffee/, loader: 'coffee' },
{ test: /\.cjsx$/, loaders: ['coffee', 'cjsx'] },
{ test: /\.js$/, loader: 'jsx-loader?harmony' }
]
}
}
Если я запускаю $(npm bin)/webpack --config webpack.js --watch
и вношу изменения в a.cjsx
, он компилирует более новую версию этого файла с новым chunkedhash. Тем не менее, старый остается, и я хочу, чтобы он был удален сразу.
В этих целях есть clean-webpack-plugin, или вы можете написать простой bash
script для npm
:
"scripts": {
"build": "rm -r dist/* && webpack -p",
"clean": "rm -r dist/*"
}
Вот webpack-clean-obsolete-chunks
плагин, который делает то, что вы хотите. Он ищет все обновленные куски и удаляет устаревшие файлы после каждой компиляции webpack
.
Я решил написать ответ, потому что другие, хотя и пытались дать прямой ответ на вопрос, на мой взгляд, упустили из виду самую важную часть.
И самая важная часть: вы не должны делать это таким образом. Использование заполнителей [hash]
в вашей настройке разработки вызывает много головной боли при использовании других инструментов (например, автозаполнение пути phpstorm в плагине symfony). Кроме того, он плох для производительности инкрементальной компиляции webpack и поэтому не рекомендуется в официальных документах webpack (ссылка).
Так что для будущих читателей: просто сделайте это простым для конфигурации разработки - определите ваш filename
как [name].js
и двигайтесь дальше.
Взгляните на этот запрос: https://github.com/johnagan/clean-webpack-plugin/pull/32/files
Откройте файл raw file и скопируйте его в index.js из чистого плагина webpack. Помните о флаге конфигурации → watch: true
Я решил эту проблему, добавив ниже в webpack.config.js
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
{
... your configs ...
plugins: [new CleanWebpackPlugin()]
}