如何自动化清理Rails 6中Webpack的public/packs文件夹?
Rails 6 Webpacker public/packs 文件夹自动清理方案
方法1:开启Webpacker内置清理功能(最便捷)
Webpacker 默认集成了clean-webpack-plugin,默认仅在生产环境构建时生效,你可以直接修改配置适配所有环境:
- 打开项目根目录下的config/webpacker.yml文件
- 找到对应环境的配置项,调整
clean和clean_keep参数:
# 生产环境配置 production: # 开启构建前自动清理旧资源 clean: true # 保留最近3次构建的资源,避免版本回滚时资源404,可根据需求调整 clean_keep: 3 # 开发环境也可以同步开启,避免本地文件堆积 development: clean: true
修改后每次执行webpacker:compile构建时,都会自动清理超出保留数量的旧文件。
方法2:手动配置webpack清理规则(高度自定义)
如果需要自定义清理范围、排除特定文件等特殊需求,可以直接修改webpack配置:
- 确认依赖已安装(Webpacker默认自带,缺失的话执行
yarn add clean-webpack-plugin --dev) - 打开config/webpack/environment.js,添加插件配置:
const { CleanWebpackPlugin } = require('clean-webpack-plugin'); environment.plugins.append('CleanWebpackPlugin', new CleanWebpackPlugin({ // 清理规则:清理所有packs文件,排除static-files开头的静态资源 cleanOnceBeforeBuildPatterns: ['**/*', '!static-files*'], // 开启日志输出,可查看清理的文件列表 verbose: true, // 设为true时仅模拟清理不实际删除,测试规则时使用 dry: false, })); module.exports = environment;
方法3:部署流程前置清理
如果你使用CI/CD、Capistrano等工具部署,可以在构建步骤前直接清理目录:
- 在构建脚本的编译步骤前添加命令:
rm -rf public/packs/* - 再正常执行
rails assets:precompile或bundle exec rails webpacker:compile即可
注意:如果生产环境有多实例部署、或者需要支持版本回滚,不建议直接清空整个目录,保留最近2-3次构建的资源更稳妥,避免旧页面引用的资源被清理后出现访问异常。
内容的提问来源于stack exchange,提问作者Vivek Kumar
相关产品推荐
相关产品推荐

