首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vite -更改资产的输出目录

Vite -更改资产的输出目录
EN

Stack Overflow用户
提问于 2022-02-18 22:27:09
回答 3查看 11.5K关注 0票数 7

默认情况下,Vitedist下的源目录中生成文件。

代码语言:javascript
运行
复制
my-app/
├─ node_modules/
├─ dist/
│  ├─ assets/
|  |    | index.js
|  |    | index.css        
│  ├─ index.html
├─ index.html
├─ main.js
├─ style.scss
├─ package.json

我需要为jscss文件在assets下创建一个不同的文件夹。换句话说,我需要将jscss文件器分别放在/assets/js/assets/css文件夹下。

代码语言:javascript
运行
复制
my-app/
├─ node_modules/
├─ dist/
│  ├─ assets/
|  |    |-js/
|  |    |   index.js
|  |    |-css/
|  |    |  index.css  

这是我的配置文件。

代码语言:javascript
运行
复制
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import svgrPlugin from "vite-plugin-svgr";

// https://vitejs.dev/config/
export default defineConfig({
  base: "./",
  plugins: [react(), svgrPlugin()],
  server: {
    open: true,
    proxy: {
      "/base": {
        target: "http://localhost:19000",
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/base/, ""),
      },
    },
  },
});

如何做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-02-20 01:10:11

输出文件名在使用build.rollupOptions的汇总中配置

  1. output.assetFileNames设置为配置资产文件名(用于媒体文件和样式表)。
  2. output.chunkFileNames设置为配置供应商块文件名。
  3. output.entryFileNames设置为配置index.js文件名。
代码语言:javascript
运行
复制
// vite.config.js
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  build: {
    rollupOptions: {
      output: {
        1️⃣
        assetFileNames: (assetInfo) => {
          let extType = assetInfo.name.split('.').at(1);
          if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) {
            extType = 'img';
          }
          return `assets/${extType}/[name]-[hash][extname]`;
        },
        2️⃣
        chunkFileNames: 'assets/js/[name]-[hash].js',
        3️⃣
        entryFileNames: 'assets/js/[name]-[hash].js',
      },
    },
  },
});

演示

票数 22
EN

Stack Overflow用户

发布于 2022-03-25 09:04:19

谢谢tony19,这个工作也很正常,但是我有构建错误:vite: build assetInfo.name.split(.).at不是一个函数

我简单的改变

代码语言:javascript
运行
复制
assetInfo.name.split('.').at(1);

代码语言:javascript
运行
复制
assetInfo.name.split('.')[1];
票数 3
EN

Stack Overflow用户

发布于 2022-04-27 06:30:32

如果在css文件中使用@font-face,它就会大量出现。您可能需要将字体放在与css文件相同的文件夹中。

我使用过woffwoff2字体

代码语言:javascript
运行
复制
    rollupOptions: {
      output: {
        assetFileNames: (assetInfo) => {
          var info = assetInfo.name.split(".");
          var extType = info[info.length - 1];
          if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) {
            extType = "img";
          } else if (/woff|woff2/.test(extType)) {
            extType = "css";
          }
          return `static/${extType}/[name]-[hash][extname]`;
        },
        chunkFileNames: "static/js/[name]-[hash].js",
        entryFileNames: "static/js/[name]-[hash].js",
      },
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71180561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档