in cdn-aliyun/aliyun.go [220:286]
func (c *CDN) scanEmbedFiles(fileName string) (err error) {
entry, err := ui.Build.ReadDir(fileName)
if err != nil {
log.Error("read static dir failed: %v", err)
return
}
for _, info := range entry {
if info.IsDir() {
err = c.scanEmbedFiles(filepath.Join(fileName, info.Name()))
if err != nil {
return
}
continue
}
var file fs.File
filePath := filepath.Join(fileName, info.Name())
fi, _ := info.Info()
size := fi.Size()
file, err = ui.Build.Open(filePath)
defer file.Close()
if err != nil {
log.Error("open file failed: %v", err)
return
}
filePath = strings.TrimPrefix(filePath, "build/")
// rebuild custom io.Reader
ns := strings.Split(info.Name(), ".")
if info.Name() == "asset-manifest.json" {
err = c.Upload(filePath, c.rebuildReader(file, map[string]string{
"\"/static": "",
}), size)
if err != nil {
return
}
continue
}
if ns[0] == "main" {
ext := strings.ToLower(filepath.Ext(filePath))
if ext == ".js" || ext == ".map" {
err = c.Upload(filePath, c.rebuildReader(file, map[string]string{
"\"static": "",
"=\"/\",": "=\"\",",
}), size)
if err != nil {
return
}
continue
}
if ext == ".css" {
err = c.Upload(filePath, c.rebuildReader(file, map[string]string{
"url(/static": "url(../../static",
}), size)
if err != nil {
return
}
continue
}
}
c.Upload(filePath, file, size)
}
return nil
}