vite 文件名中不带哈希值

Sim*_*n H 26 rollup vite

我正在尝试编译一个基于 monaco 编辑器的 Web 组件(在 lit 元素上下文中)。尝试了很多选项后,我现在将结果缩减为两个文件

  • rmx-monaco.abc123.js
  • style.css

我的首要任务是摆脱散列(abc123),但我也想将 js 和 css 缩减为一个文件。提前致谢

我的配置如下:

import { resolve } from "path";

export default defineConfig({
    base: "/",
    build: {
        rollupOptions: {
            input:
                // main: resolve(__dirname, "index.html"),
                resolve(__dirname, "src/rmx-monaco.ts"),

            output: {
                // Prevent vendor.js being created
                manualChunks: undefined,
                // chunkFileNames: "zzz-[name].js",
                // this got rid of the hash on style.css
                assetFileNames: "assets/[name].[ext]",
            },
        },
        // Prevent vendor.css being created
        cssCodeSplit: false,
        // prevent some warnings
        chunkSizeWarningLimit: 60000,
    },
});
Run Code Online (Sandbox Code Playgroud)

我的 js 入口文件有这些行

import * as monaco from "monaco-editor/esm/vs/editor/editor.api";
import { languages } from "monaco-editor/esm/vs/editor/editor.api";
import styles from "monaco-editor/min/vs/editor/editor.main.css";
Run Code Online (Sandbox Code Playgroud)

(如果有帮助的话我可以添加更多)

小智 48

添加这个:

export default defineConfig({
  ...
  build: {
    rollupOptions: {
      output: {
        entryFileNames: `assets/[name].js`,
        chunkFileNames: `assets/[name].js`,
        assetFileNames: `assets/[name].[ext]`
      }
    }
  }
})
Run Code Online (Sandbox Code Playgroud)


Sim*_*n H 15

我需要添加 output: {entryFileNames: "[name].js",...

仍在努力获取单个文件


Bra*_*hof 5

对 @joy-lab 提供的答案的小补充:您可以使用回调自定义单个文件的文件名结构。我必须仅删除 Fontawesome 精灵文件的哈希值:

const fontawesomeFileNames = [
  "brands.svg",
  "sharp-solid.svg",
  "sharp-light.svg",
  "sharp-regular.svg",
  "solid.svg",
  "regular.svg",
  "light.svg",
  "duotone.svg",
  "thin.svg",
];

export default defineConfig({
  ...
  build: {
    rollupOptions: {
      output: {
       assetFileNames: function (file) {
        return fontawesomeFileNames.includes(file.name)
          ? `assets/[name].[ext]`
          : `assets/[name]-[hash].[ext]`;
        },
      }
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

这使得除了名称包含在fontawesomeFileNames数组中的文件之外的所有文件的哈希值保持不变。