我在找关于如何删除旧的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
进行更改,它会使用新的块散列编译该文件的较新版本。但是,旧的仍然存在,我希望立即将其删除。
发布于 2015-09-09 21:54:23
有一个clean-webpack-plugin可以实现这些目的,或者您可以为npm
编写一个简单的bash
脚本:
"scripts": {
"build": "rm -r dist/* && webpack -p",
"clean": "rm -r dist/*"
}
发布于 2017-03-25 21:43:02
这是webpack-clean-obsolete-chunks
插件,它可以做你想做的事情。它搜索所有更新的块,并在每次webpack
编译后删除过时的文件。
发布于 2018-11-14 04:43:21
答案
我决定写一个答案,因为其他人虽然试图直接回答这个问题,但在我看来,他们忽略了最重要的部分。
最重要的是:你不应该这样做。在您的开发设置中使用[hash]
占位符会导致许多其他工具的问题(例如symfony插件中phpstorm的路径自动完成)。此外,它对于webpack的增量编译性能也很差,因此不被官方的webpack文档(reference)推荐。
因此,对于未来的读者:只需保持开发配置的简单性-将您的filename
定义为[name].js
,然后继续。
编辑
对于如何处理生产服务器上的旧块文件,似乎存在混乱。好吧,你什么都不做。一旦部署了一个版本,就不应该再对其进行更改。您只需在部署时不断创建新版本,并保留以前的版本作为备份。为什么?
因为您希望回滚是可靠的,并且要使其成为可能,您的回滚需要非常简单和原子。如果您的回滚过程只是切换符号链接、重新路由到以前的容器(或类似的简单操作),那么™很可能会遇到麻烦。
回滚不是再次“重新部署”应用程序的过程,而是现在到上一个版本的过程。这是一个“撤销”部署的过程。所以,当你的生产应用程序挂在那里时,对上一个版本执行git checkout
,然后执行npm build --but-please-be-hurry --and-im-begging-you-dont-fail
,完全爆炸在这里是行不通的。
重新构建应用程序的以前版本-就像部署一样-可能会因为许多原因而失败。这就是为什么回滚应该切换/重新路由回被证明有效的完全相同的版本。不是相同的,而是100% ===
-==
-same。这就是为什么您需要保留以前的版本,因为它是===
-same。“重新生成”的是-在最好的情况下-只有==
-是相同的,因此它没有被证明是有效的,只是假设。
不,再多的CI、临时环境或其他任何东西都不能保证部署成功。正确做法的一部分是为事情出错做好准备。事情就会变得糟糕。希望只是时不时的,但仍然如此。
当然,一旦你备份了3、5或<put-your-number-here>
版本,你就可以开始删除最旧的版本,因为你可能永远不会需要超过3个版本。
https://stackoverflow.com/questions/31735584
复制相似问题