1835 字
9 分钟
Flist - 一个可以部署在静态网站上的网盘

教程前置#

  1. Github账号
  2. jianjianai/FList: 将 GitHub Releases,Hugging Face,文件url等,渲染成类似网盘的文件列表显示在网页上,方便用户下载开源软件。 支持视频、音频、图片、PDF 等文件的在线预览。
  3. cloudflare,netlify等托管网站账号

你也可以上官方文档查看

开始#

提醒 color:yellow

建议先提前fork仓库

你可以选择以下几种方式编辑代码:

  • Github上直接编辑
  • 本地vscode编辑

所有的配置文件都在 vuepress.config.ts 文件中,你可以根据自己的需求进行修改。

所有有关网盘的配置都在 FileList 函数的参数中。FileList 接收一个文件数组,可以配置挂载多个文件源。

**注意,每个对象都要用{}包裹,每个对象之间用,隔开。**比如:

export default defineUserConfig({
....
theme: FileList([
{...},
{...},
{...},
{...}
]),
.....
});

一般写成这样的形式,方便你自己进行更改。

{
...
}

挂载文件#

一般格式:

{
mountPath:..., // 挂载路径,即渲染之后文件会出现在哪里
analysis:..., // 文件源分析器
downproxy:... // 非必要,后面会提及
}
  • mountPath: 挂载路径,就是将文件源中的文件放到什么路径下
  • analysis: 文件源分析器。
  • downproxy: 下载代理。如果文件在github等地方,下载速度是堪忧的,因此可以借助下载代理。(非必要!)

挂载文件支持:

  • Github release
  • Github repos
  • Gitee
  • Hugging Face Datasets
  • URL

anlysis#

官方文档把anlysis分开了,这里进行汇总

支持anlysis
Github releasegithubReleasesFilesAnalysis({user:"", repository:""})
Github reposgithubReposAnalysis
Gitee 发行版giteeReleasesFilesAnalysis
Hugging Face DatasetshuggingFaceDatasetsAnalysis
URLfileUrlTreeAnalysis

Github release(下面将摘录原文)#

配置方法#

jianjianaiFList 仓库挂载到根目录 /

{
mountPath:"/",
analysis:githubReleasesFilesAnalysis({user:"jianjianai", repository:"FList"})
}

这样就把 jianjianaiFList 仓库挂载到了根目录 / 下了。

githubReleasesFilesAnalysis 特性#

githubReleasesFilesAnalysis 会将 GitHub Releases 中的每个标签解析为一个目录,标签下发行的文件放到这个目录中。例如:

  • v1.0 -> /v1.0
  • v1.1 -> /v1.1

如果想要将文件放到/下可以将标签名称命名为 root,在 root 标签下的文件会被放到 / 下。

如果想要将文件放到更深的目录下,则可以在标签中使用/。例如

  • v1.0/test -> /v1.0/test
  • test/test2 -> /test/test2

Github ropes#

配置方法#

AikoyoriProgrammingVTuberLogos 仓库挂载到根目录 /

{
mountPath: "/ProgrammingVTuberLogos",
analysis: githubReposAnalysis({
user: "Aikoyori",
repository: "ProgrammingVTuberLogos",
// rootPath: string, //根路径,挂载仓库的路径
// authorizationToken: string, //github token
// ref: string, //github分支
// maxDeep: number, //最大深度,默认10
// hideReadme: true, //隐藏README.MD文件
}),
}

这样就把 AikoyoriProgrammingVTuberLogos 仓库挂载到了根目录 / 下了。

githubReposAnalysis 特性#

将文件夹中的 README.MD 文件显示在文件夹的简介区#

如果当前文件夹中有 README.MD 文件,则会将 README.MD 文件 显示在文件夹的简介区。

将相同文件名 .README.MD 结尾的文件现在在简介区#

例如有两个文件 A.exe A.exe.README.MD 在同一个文件夹中,则会将 A.exe.README.MD 的内容显示在 A.exe 文件的简介区。

关于下载代理#

如果直接从GitHub下载速度可能不佳。

并且由于跨域的原因,PDF,TXT,这些文件无法预览,只能下载。(视频图片音频可以预览)。

建议配置下载代理, 可以加速下载和解决跨域问题。

.README.MD 文件太多影响观感#

可以使用 hideReadme 选项将这些文件隐藏掉。

{
.....
analysis: githubReposAnalysis({
.....
hideReadme: true, //隐藏README.MD文件
}),
}

Gitee#

将 Gitee 发行版挂载到 FList 上

配置方法#

jianjianaiFList 仓库挂载到根目录 /

{
mountPath:"/",
analysis:giteeReleasesFilesAnalysis({
user:"jianjianai",
repository:"FList",
//direction: 'asc', //排序
//access_token: 'xxxx', //用户token
//page: 0, //第几页
//per_page: 100 //一页显示多少个
})
}

giteeReleasesFilesAnalysis 特性#

giteeReleasesFilesAnalysis 会将 Gitee 发行版 中的每个标签解析为一个目录,标签下发行的文件放到这个目录中。例如:

  • v1.0 -> /v1.0
  • v1.1 -> /v1.1

如果想要将文件放到/下可以将标签名称命名为 root,在 root 标签下的文件会被放到 / 下。

如果想要将文件放到更深的目录下,则可以在标签中使用/。例如

  • v1.0/test -> /v1.0/test
  • test/test2 -> /test/test2

最佳实践#

tag数量超过100个#

如果tag数量超过100个则可以将每一页分开写成多个解析器挂载到相同的目录,文件会自动合并。

...
theme: FileList([
...
{
mountPath:"/gieee",
analysis:giteeReleasesFilesAnalysis({
user:"jianjianai",
repository:"FList",
page: 0, //第一页
per_page: 100 //一页显示多少个
})
},
{
mountPath:"/gieee",
analysis:giteeReleasesFilesAnalysis({
user:"jianjianai",
repository:"FList",
page: 2, //第二页
per_page: 100 //一页显示多少个
})
}
...
])
...

Hugging Face Datasets#

将 Hugging Face 的 Datasets 挂载到 FList 上

配置方法#

将用户 Open-OrcaOpenOrca 数据集的 main 分支挂载到 /huggingface测试

huggingFaceDatasetsAnalysis参数

  • userName 用户名
  • datasetsName 数据集名称
  • branchName 分支名称
  • maxDeep 最大深度,如果文件夹有很多层最大递归解析多少层,默认10
{
mountPath:"/huggingface测试",
analysis:huggingFaceDatasetsAnalysis({
userName:"Open-Orca",
datasetsName:"OpenOrca",
branchName:"main",
//最大深度,如果文件夹有很多层最大递归解析多少层,默认10
maxDeep:3
//path:"/test" //数据集的某文件夹,只挂载这个文件夹
// hideReadme: true, //隐藏README.MD文件
}),
}

将文件夹中的 README.MD 文件显示在文件夹的简介区#

如果当前文件夹中有 README.MD 文件,则会将 README.MD 文件 显示在文件夹的简介区。

URL#

如果拥有某个文件的加载地址,也可以将其挂载到 FList 上。

配置方法#

https://example.com/test.jpg 的文件挂载到 /example 下,有两种配置文件分析器的的方式。

将挂载路径设置到/example下,之后配置 fileUrlTreeAnalysis ,将文件放到 / 下。

{
mountPath:"/example",
analysis:fileUrlTreeAnalysis({
"/test.jpg":"https://example.com/test.jpg"
}),
}

将挂载路径设置到/下,之后配置 fileUrlTreeAnalysis ,将文件放到 /example 下。

{
mountPath:"/",
analysis:fileUrlTreeAnalysis({
"/example/test.jpg":"https://example.com/test.jpg"
}),
}

fileUrlTreeAnalysis 可以一次分析多个文件。

{
mountPath:"/",
analysis:fileUrlTreeAnalysis({
"/example/test.jpg":"https://example.com/test.jpg",
"/test1.jpg":"https://example.com/test1.jpg",
"/test/test2.jpg":"https://example.com/test2.jpg",
"/example/test3.jpg":"https://example.com/test3.jpg",
"/example/test/test4.jpg":"https://example.com/test4.jpg",
.....
}),
}

下载代理#

代理格式(即downproxy的内容)
cloudflarecloudflarePagesDownProxy()
vercelvercelDownProxy()
netlifynetlifyDownProxy()

部署#

不推荐使用github page!

部署的方式十分简单,导入自己fork的仓库,模板为Vue

Build command(自定义部署命令)

Terminal window
pnpm run build

Build output directory(输出目录)

Terminal window
.vuepress/dist

最后构建即可!

补充#

下载跨域限制级#

Flist 将下载跨域限制级分为 4 个等级,分别是:

  • allow: 允许跨域,所有功能均可正常使用。
  • loose: 浏览器不阻止跨域的资源可以预览,例如视频音频图片等。
  • strict: 服务端会通过origin请求头或者其他方法严格限制跨域访问,无法预览。
  • verystrict: 就连从其他网站点击超链接下载也不行,非常严格的防盗链,需要复制下载链接在新标签页粘贴才能下载。

总结:如果需要预览PDF,MD,TXT等文件则需要 allow 等级。如果需要预览视频图片音频等则至少需要 loose 等级。需要点击下载按钮自动开始下载则至少需要 strict 等级。

提醒 color:yellow

如果配置了下载代理,无论是什么等级都会被提升到 allow 等级。

下载跨域限制级列表#

可挂载的平台在 Flist 下载跨域限制级列表

平台限制级描述
GitHub Releasesloose
GitHub Reposloose
Hugging Face Datasetsallow
URL 下载地址allowFlist 无从知晓您提供的链接的下载跨域等级,所以会直接给予 allow 等级,开放全部功能,能否使用取决于链接是否允许跨域。
Gitee 发行版loose
Gitee 仓库verystrict
Tip color:green

在 Flist 页面按 F12 打开控制台可以看到当前文件限制级的日志输出哦。

Flist - 一个可以部署在静态网站上的网盘
https://fuwari.vercel.app/posts/55643/
作者
绮曜
发布于
2024-10-04
许可协议
CC BY-NC-SA 4.0

评论