gpt4 book ai didi

ruby-on-rails - Webpacker on Rails 用于生成带有静态 URL 的 widget.js

转载 作者:行者123 更新时间:2023-12-04 10:36:40 25 4
gpt4 key购买 nike

我正在为网站构建一个 JS 小部件,这个小部件应该有静态 url - 例如https://myproduct.com/widget.js我想在其中使用 ES6 功能..(我想以某种方式将编译后的 JS 放入 public/widget.js 中)

Webpacker 将代码编译成类似 http://localhost:3000/packs/js/widget-94e8fa5b2be40540f2fb.js 的内容在我的情况下效果不佳。

做这个的最好方式是什么?

最佳答案

编译后 webpacker 创建 public/packs/manifest.json包含有关如何准确命名文件的信息。

在 Controller 中,您可以从 list 中获取信息并重定向:

# get 'widget', to: 'some_controller#widget'
def widget
path = helpers.current_webpacker_instance.manifest.lookup!('widget', type: :javascript) # => "/packs/js/widget-94e8fa5b2be40540f2fb.js"
redirect_to path
# also here you can calculate path and use send_data
end

如果你不关心缓存破坏(或使用其他方法),不想要额外的重定向,想要通过 webserver 服务小部件而不击中 rails 等,你可以在编译后复制包,定义一个 rake 任务:

task 'copy_my_widget' => :environment do
manifest = JSON.parse(File.read(Rails.root.join('public/packs/manifest.json')))
pack_path = Rails.root.join('public', '.' + manifest['widget.js'])
FileUtils.cp(pack_path, Rails.root.join('public', 'widget.js'))
end

Rake::Task["webpacker:compile"].enhance do
Rake::Task["copy_my_widget"].invoke
end

关于ruby-on-rails - Webpacker on Rails 用于生成带有静态 URL 的 widget.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60147892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com