xiaweiss / vite-plugin-ali-oss

Upload the production files bundled in the project to Ali OSS, except for html
MIT License
31 stars 10 forks source link

建议增加两个选项,from和dist #6

Closed kimmy-wang closed 2 years ago

kimmy-wang commented 2 years ago
  1. from: 上传哪些文件,支持glob方式,如'./build/**', 可以为glob字符串或者数组。
  2. dist: 上传到oss哪个目录下,默认为oss根目录。可作为路径前缀使用。
xiaweiss commented 2 years ago
  1. 默认是上传的所有资源文件,只排除了 *.html。可以通过 ignore 来配置忽略哪些文件。
  2. 上传到哪个目录下,是通过配置 base 选项实现的。oss 默认是按根目录生成的文件地址,就是 https://存储仓库名.地域/文件路径
kimmy-wang commented 2 years ago
  1. base设置路径并不能设置上传到oss哪个目录下,我通过自定义oss上传路径,进行版本控制
xiaweiss commented 2 years ago

举个例子,例如 base 设置为 base: 'https://foo.com/base/my-dir/',实际上 oss 存储的目录也是和 base 一样的

image
kimmy-wang commented 2 years ago

这个base是vite的配置吧

xiaweiss commented 2 years ago

版本控制其实不需要做额外的工作,每次打包后,都会有 hash 值。如果文件内容变化后,hash 值也会变化。

image
xiaweiss commented 2 years ago

是的,是 vite 的配置。

kimmy-wang commented 2 years ago

谢谢,我试一下吧

xiaweiss commented 2 years ago

关于 glob 我不是很明白你需要的场景。现在插件就是用的 glob 库来读取文件的。

如果要修改打包后输出的目录,只要修改 vite 配置 build.outDir 就可以了。插件会读取这个目录。否则默认读取 dist 目录。

kimmy-wang commented 2 years ago
  1. 我想只上传某个目录,如果只用ignore来匹配很难
xiaweiss commented 2 years ago

我明白你想要的功能,但不太清楚你具体是什么场景下使用。

考虑了下,如果是平常的 vue 等网页项目,不建议只上传某个目录。

例如: base 配置为 https://foo.com/base/my-dir/ 时 项目原始代码为:

<img src="@/assets/img/1.png" />
<img src="@/assets/img-not-upload/2.png" />

vite build 打包后,实际代码为:

<img src="https://foo.com/base/my-dir/img/1.hash.png" />
<img src="https://foo.com/base/my-dir/img-not-upload/2.hash.png" />

此时如果 2.png 没有上传,实际项目运行在生产环境时,会表现为丢失了资源 404。

所以只是加了 from 这个配置,可能会导致使用者预料之外的 bug

kimmy-wang commented 2 years ago

在ssr场景下很重要

xiaweiss commented 2 years ago

我需要考虑下如何处理上面提到的问题,请具体描述下你的场景,或者给个项目 demo?

kimmy-wang commented 2 years ago

https://github.com/see/vite-ssr-issue

我需要上传build后的某个特定的目录,比如mobile-assets,其余目录或文件没必要上传

截屏2022-07-24 19 37 35
xiaweiss commented 2 years ago

好的,明白了,我看看

xiaweiss commented 2 years ago

初步看了下,不需要增加配置了。插件在 configResolved 钩子里,可以读取 config.build.ssrManifest 和 config.build.ssr 这 2 个配置,然后做相应的路径处理。

预计会在 1、2 周左右弄完,如果着急的话,也欢迎提 PR

kimmy-wang commented 2 years ago

不着急