Rails项目使用importmap-rails时,JS变更能否自动编译?
在importmap-rails中实现JavaScript代码自动更新
importmap-rails的工作逻辑和webpacker完全不同——它在开发环境下不需要预编译打包,默认就支持代码变更的自动加载,根本不用手动执行rails assets:precompile。你现在需要手动执行的情况,大概率是误操作导致的。
1. 核心逻辑说明
开发环境中,Rails的资产管线会直接读取你的JavaScript源文件(包括Stimulus控制器),修改后只要刷新浏览器就能看到变更。只有生产环境才需要执行rails assets:precompile来生成优化后的静态文件。
2. 解决当前手动预编译的问题
如果现在必须手动执行命令才能生效,大概率是你之前在开发环境下跑过预编译,导致Rails优先读取了public/assets目录下的预编译文件,而非源文件。解决步骤:
- 删除预编译生成的资产目录:
rm -rf public/assets - 重启Rails服务器,之后修改JS代码后直接刷新浏览器即可看到更新。
3. Stimulus控制器的自动更新优化
如果你是通过Rails官方的rails stimulus:install集成的Stimulus,开发环境下还能实现无需刷新浏览器的自动更新:
- 确保
config/environments/development.rb中保留默认配置:config.assets.debug = true config.assets.digest = false - 开启Turbo的自动刷新(默认新建Rails项目已经启用),修改Stimulus控制器后,页面会自动重载变更。
内容的提问来源于stack exchange,提问作者Alexander Abramov
相关产品推荐
相关产品推荐

