如何配置jasmine-browser-runner实现Rails(Sprockets)资产自动编译热更新
解决方案:一键启动+自动刷新JavaScript测试
1. 修改Jasmine配置,对接Rails动态资产编译
编辑项目根目录的jasmine-browser.json,将srcFiles从预编译的静态文件路径,改为指向Rails开发服务器的动态资产URL,同时配置代理转发资产请求:
{ "srcFiles": [ "http://localhost:3000/assets/application.js" ], "specFiles": [ "spec/javascripts/**/*[sS]pec.js" ], "helpers": [ "spec/javascripts/helpers/**/*.js" ], "server": { "port": 8888, "proxy": { "/assets": "http://localhost:3000/assets" } } }
这样Jasmine测试页面会直接从Rails开发服务器加载实时编译的最新资产,彻底告别手动预编译、清理旧文件的操作。
2. 配置文件监听,自动刷新测试页面
在jasmine-browser.json中添加watchPaths,让Jasmine监听源码文件变化并自动刷新:
{ // 保留原有配置 "watchPaths": [ "app/assets/javascripts/**/*.js", "app/assets/stylesheets/**/*.css", "spec/javascripts/**/*.js" ] }
当上述路径下的文件修改时,Rails会自动重新编译资产,Jasmine也会同步刷新测试页面,无需手动干预。
3. 一条命令启动所有服务
安装concurrently工具,实现同时启动Rails开发服务器和Jasmine测试服务器:
npm install --save-dev concurrently
在项目package.json中添加自定义脚本:
{ "scripts": { "test:js": "concurrently \"rails s -p 3000\" \"npx jasmine-browser-runner serve\"" } }
现在只需执行以下命令,即可一键启动所有服务:
npm run test:js
额外优化(可选)
如果不想看到Rails的冗余日志输出,可以将日志重定向到文件:
"test:js": "concurrently \"rails s -p 3000 > rails.log 2>&1\" \"npx jasmine-browser-runner serve\""
内容的提问来源于stack exchange,提问作者Pascal Lindelauf
相关产品推荐
相关产品推荐

