如何将静态文件添加到闪亮的 R 包中以用于新的输入控件

How to add static files to shiny R package for new input control

我尝试使用 addResourcePath 并包含 extdata 目录(在 inst 目录中):

在我的自定义输入函数中包含脚本和 css 文件:

#' @export
multiSelect <- function(inputId, label = NULL, choices = NULL, selected = NULL) {
  args <- lapply(names(choices), function(name) {
    value <- choices[[name]]
    if (value %in% selected) {
      tags$option(value = value, selected = "selected", name)
    } else {
      tags$option(value = value, name)
    }
  })
  args$id = inputId
  args$class = "multiple-select"
  args$multiple = "true"
  tagList(
    singleton(tags$head(
      tags$link(rel = "stylesheet", href = "extdata/multiSelect.css"),
      tags$script(src = "extdata/multiSelect.js")
    )),
    tags$script(paste0("$('#", inputId, "').multipleSelect()")),
    tags$div(
      class = "form-group shiny-input-container",
      tags$label(`for`=inputId, label),
      do.call(tags$select,  args)
    )
  )
}

我试过这个:

addResourcePath('extdata', system.file('extdata', package='myPackage'))

我 运行 这个在我的 divosshiny\R\shinyUtils.R 包文件里。

但是当我 运行 服务器打开时:

http://127.0.0.1:7003/extdata/multiSelect.js

multiSelect.jspackage/inst/extdata/ 目录中。我错过了什么吗? addResourcePath 应该如何工作?

我构建包时没有收到任何错误。当我将 extdata 拼错为 exdata 时出现错误,所以我知道路径是正确的。

函数addResourcePath需要在用户代码中执行(在main server.R),我添加了一个函数:

#' @export
setupWidgets <- function() {
  addResourcePath('extdata', system.file('extdata', package='divosShiny'))
}

并在 server.R 中执行并成功。