美文网首页
vite对媒体、图片等文件打包处理单独发布到CDN

vite对媒体、图片等文件打包处理单独发布到CDN

作者: FateOfKing | 来源:发表于2023-11-28 14:05 被阅读0次

vite对媒体、图片等文件打包处理单独发布到CDN

1. 如果你希望对某几个库进行CDN部署,推荐使用vite-plugin-cdn-import

2.如果你希望对整个项目进行CDN部署,使用vite.config.ts中的base字段即可

import { defineConfig } from 'vite';

 
export default defineConfig(({ mode }) => {
  const isProduction = mode === 'production';
  const cdnDomain = isProduction ? process.env.VITE_CDN_DOMAIN : '/';
 
  return {
    base: cdnDomain,
  };

3.如果你希望只对某些文件进行CDN部署,比如图片,MP4等

// vite.config.ts
// https://vitejs.dev/config/
export default ({ mode }: ConfigEnv): UserConfigExport => {
  return {
    //......其他配置

    build: {

      rollupOptions: {
        output: {
          assetFileNames: (chunkInfo) => {
            // 用后缀名称进行区别处理
            // 处理其他资源文件名 e.g. css png 等
            if (
              chunkInfo.name?.endsWith('.webm') ||
              chunkInfo.name?.endsWith('.png') ||
              chunkInfo.name?.endsWith('.jpg') ||
              chunkInfo.name?.endsWith('.gif')
            ) {
              return `assets/images/[name].[ext]`;
            }

            return `assets/[name].[hash].[ext]`;
          },
        },
      },
    },
    experimental: {
      renderBuiltUrl(filename: string) {
        if (
          filename.endsWith('.webm') ||
          filename.endsWith('.png') ||
          filename.endsWith('.jpg') ||
          filename.endsWith('.gif')
        ) {
          const name = filename.replace('assets/images/', '');
          return `https://cdnURL/images/${name}`;
        }

        return filename;
      },
    },
  };
};

打包后dist的结构

├── assets
│   ├── images
│   │   ├── xxx.png
│   ├── xxx.js
│   ├── xxx.css
├── index.html
└── vite.svg

相关文章

网友评论

      本文标题:vite对媒体、图片等文件打包处理单独发布到CDN

      本文链接:https://www.haomeiwen.com/subject/nrxxgdtx.html