You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite配置:如何将构建产物从main.cjs改为main.js

解决方法

要将生成的文件从main.cjs改为main.js,有两种简单的修改方式:

方式一:直接指定完整文件名

修改Vite配置中lib下的fileName字段,直接设置为带.js后缀的文件名:

import { defineConfig } from "vite";

export default defineConfig({
    build: {
        lib: {
            entry: "src/main.ts",
            name: "main",
            fileName: "main.js", // 改为带.js后缀的文件名
            formats: ["cjs"],
        },
        outDir: ".",
        rollupOptions: {
            external: ["obsidian"],
            output: {
                globals: {
                    obsidian: "obsidian",
                },
            },
        },
    },
});

原理:原本fileName设为main时,Vite会根据formats配置的格式(cjs)自动追加后缀.cjs;直接指定main.js后,Vite会使用这个完整文件名,不再自动追加格式后缀。

方式二:通过Rollup输出配置指定文件名格式

如果需要更灵活的文件名控制,可以在rollupOptions.output中设置entryFileNames字段:

import { defineConfig } from "vite";

export default defineConfig({
    build: {
        lib: {
            entry: "src/main.ts",
            name: "main",
            fileName: "main",
            formats: ["cjs"],
        },
        outDir: ".",
        rollupOptions: {
            external: ["obsidian"],
            output: {
                globals: {
                    obsidian: "obsidian",
                },
                entryFileNames: "[name].js" // 指定输出文件名为[name].js
            },
        },
    },
});

原理:entryFileNames用于定义Rollup输出的入口文件名格式,[name]会替换为你在lib.name中设置的main,最终生成main.js。

两种方法都能实现需求,方式一更直接简单,适合单格式输出的场景。

内容的提问来源于stack exchange,提问作者AndrewSunshiny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:35:18