您可以从git /共享驱动器访问css文件以供公司共享吗?

时间:2020-09-09 12:07:26

标签: css r shiny r-markdown

是否有更好的方法让小组内的程序员寻求共享闪亮应用程序或rmarkdown文档的通用样式,以便从单个位置访问css文件,而不是手动将所需文件复制到每个应用程序的子内容或文件?

理想的结果是将文件放在github仓库中,然后通过其Web链接将其附加到任何闪亮的应用程序或rmarkdown文件中,这可能吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

将样式表包含在R包中可能会更容易。这样一来,您每次加载应用或打开文档时都无需外部请求。将css文件放置在inst中的文件夹中,并编写一个R函数,该函数将资源路径设置为css并相应地加载文件。

假设您的包裹具有以下结构。 (对于此示例,我为软件包mypkg命名)

mypkg/
  R/
    use_stylesheets.R
  inst/
    stylesheets/
      styles.min.css
      ...
  ...

use_stylesheets.R中,使用tags$head创建一个将样式表加载到文档标题(tags$link)中的函数。

use_stylesheets <- function() {

  shiny::addResourcePath(
    "styles",
    system.file("stylesheets", package = "mypkg")
  )

  shiny::tags$head(
    shiny::tags$link(rel = "stylesheet", href = "styles.min.css")
  )

}

然后在您的应用程序或Rmarkdown文档中,可以使用mypkg::use_stylesheets()

将文件加载到您的应用程序中

答案 1 :(得分:1)

经过一番修补,我能够使用这些结构将包中的css或html添加到Shiny Apps和Rmarkdown文档中,从而获得成功(等待同事在其计算机上进行测试)。


# For attaching a css file to an Rmarkdown file
use_package_style_rmd <- function(css_file = "my_css.css"){
  # css file
  file_name <- paste0("/", css_file)
  file_path <- paste0(system.file("stylesheets", package = "my_pkg"), file_name)
  shiny::includeCSS(path = file_path)
}


# For placing an HTML headers/footers in place
use_package_header <- function(html_file = "my_header.html"){
  # HTML Header
  file_name <- paste0("/", html_file)
  file_path <- paste0(system.file("stylesheets", package = "my_pkg"), file_name)
  shiny::includeHTML(path = file_path)
}


# For attaching css to a shiny app via resourcePath
use_package_style_shiny <- function(stylesheet = "my_css.css"){

  # Add Resource Path
  shiny::addResourcePath(
    prefix = "styles",
    directoryPath = system.file("stylesheets", package = "my_pkg"))

  # Link to App
  shiny::tags$head(
      shiny::tags$link(rel = "stylesheet", 
      href = paste0("styles/", stylesheet)))
}

use_package_style_rmd函数可以放置在任何代码块中,而标头函数将在运行该函数的位置添加html。

对于Shiny应用程序用例,应运行该函数以建立文件夹的资源路径,然后在UI中fluidpage下,可以使用Resource的前缀将theme选项设置为css文件。路径styles/my_css.css

我仍然遇到的一个问题可能是一个单独的问题,即在哪里放置支持图像文件,以及如何添加相对路径以使图像可以放置在页眉或页脚中。