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
相关产品推荐
相关产品推荐

