生产站改了一点 CSS,如果直接运行不带参数的
setup:static-content:deploy,Magento
会把后台主题、Luma、多个语言包和所有自定义主题一起编译。站点越大,发布时间越长。实际只改一个主题时,部署范围可以收得很小,但
theme、area 和 locale 最好一起写清楚。
先确认主题代码和商店语言
主题名不是目录最后一级,而是注册时的
Vendor/theme。语言也要以商店实际 locale 为准:
php bin/magento config:show general/locale/code
php bin/magento theme:uninstall --help
第二条只是利用命令帮助确认当前版本的主题相关能力,不要真的执行卸载。多
Store View 环境还应从后台配置或数据库确认各 scope 的
locale,不能假设全部是 en_US。
生产模式下把范围写完整
例如只部署 Acme/shop 的中文和英文前台资源:
php bin/magento setup:static-content:deploy \
--area frontend \
--theme Acme/shop \
zh_Hans_CN en_US \
--jobs 4
如果服务器 CPU 和内存不宽裕,--jobs
不要盲目开大。主题继承的父主题资源会由依赖关系处理,通常不需要再把 Luma
单独列一遍。
开发模式不要拿生产命令反复硬跑
开发模式下静态资源可以按请求生成。此时 CSS 改动看不到,先检查浏览器拿到的文件路径、静态文件签名和预处理缓存,而不是每次都全量 deploy。生产模式才把静态资源部署当作发布步骤,并尽量在维护窗口或新 release 目录里完成。
部署完成后别只看命令返回0
检查目标目录是否真的生成:
find pub/static/frontend/Acme/shop -maxdepth 2 -type d
再用浏览器 Network 查看 CSS URL 对应的 theme 和
locale。若启用了静态内容版本号,还要刷新页面缓存和 CDN,避免 HTML
仍引用旧版本。只部署一个主题能缩短发布时间,但前提是本次改动没有同时影响后台资源、共享语言包或其他主题;涉及模块级
view/frontend
文件时,也要确认所有使用该模块资源的主题是否都需要重新部署。

