Vite 6 升级指南:CJS 和 ESM 的爱恨情仇
创作时间:
作者:
@小白创作中心
Vite 6 升级指南:CJS 和 ESM 的爱恨情仇
引用
CSDN
1.
https://m.blog.csdn.net/kaka_buka/article/details/146096342
Vite 6 升级指南:CJS 和 ESM 的爱恨情仇
前言:老朋友 CJS,新欢 ESM
说到 JavaScript 模块化,CJS 和 ESM 这俩货简直像是两代人的思维碰撞。前者是 Node.js 的老朋友,后者是前端新时代的宠儿。Vite 6 直接把 CJS 踢出了家门,独宠 ESM,让很多习惯了 require() 的老码农有点不知所措。
今天我们就来聊聊这俩模块规范的区别,以及如何在 Vite 6 的“强制迁移令”下,优雅地抛弃 CJS,投入 ESM 的怀抱。
Vite 6 变了!只认 ESM,不再兼容 CJS
Vite 6 彻底甩掉了 CJS 这个包袱,带来了几个关键的变化:
- Vite 6 只认 ESM ,CJS 语法的
module.exports直接歇菜。 - 必须用
import/export,谁还用require(),谁就是在跟 Vite 6 作对。 - 插件系统全面拥抱 ESM ,想写插件?那就老老实实改用
import。 - TypeScript 配置文件
tsconfig.config.json让 Vite 更好地解析 ESM。
好消息是,这些改动让前端环境更清爽、更高效。但坏消息是,如果你还停留在 CJS 时代,你得做点功课才能跟上节奏。
CJS vs ESM:谁更香?
我们先来看看这俩的基本区别。
特性 | CommonJS (CJS) | ECMAScript Modules (ESM) |
|---|---|---|
导入方式 | const x = require('module') | import x from 'module' |
导出方式 | module.exports = {...} | export default {...} 或 export const x = ... |
加载方式 | 同步 ( require()) | 异步 ( import()) |
适用环境 | 主要是 Node.js | 既能跑 Node.js 也能跑浏览器 |
CJS 示例:
// math.cjs
const add = (a, b) => a + b;
module.exports = { add };
// app.cjs
const math = require('./math.cjs');
console.log(math.add(5, 3));
ESM 示例:
// math.mjs
export const add = (a, b) => a + b;
// app.mjs
import { add } from './math.mjs';
console.log(add(5, 3));
一句话总结:CJS 适合老 Node.js 项目,ESM 适合所有现代 JavaScript 开发。
Vite 6 迁移指南:怎么抛弃 CJS?
1. 改造 vite.config.js
❌ 旧的 CJS 写法(Vite 5 及以前):
const { defineConfig } = require('vite');
module.exports = defineConfig({});
✅ 新的 ESM 写法(Vite 6):
import { defineConfig } from 'vite';
export default defineConfig({});
2. 更新 tsconfig.config.json
✅ 推荐配置(适配 Vite 6):
{
"extends": "@vue/tsconfig/tsconfig.node.json",
"include": ["vite.config.ts", "vitest.config.ts"],
"compilerOptions": {
"composite": true,
"module": "ESNext",
"moduleResolution": "bundler"
}
}
3. 确保 ESLint 也是 ESM 版本
❌ 旧版(CJS 写法):
module.exports = {
extends: ['plugin:vue/vue3-essential', 'eslint:recommended'],
};
✅ 新版(Vite 6 推荐 ESM 写法):
export default {
extends: ['plugin:vue/vue3-essential', 'eslint:recommended'],
};
4. 彻底清理老旧依赖
有些 NPM 包可能仍然依赖 CJS,所以最好清理一下 node_modules:
rm -rf node_modules package-lock.json
npm install # 或 yarn install / pnpm install
然后启动项目,看看 Vite 6 还能不能跑:
npm run dev # 或 vite
结语:Vite 6 之后,ESM 终于上位!
如果说 CJS 是 JavaScript 模块化的“老干部”,那么 ESM 就是新时代的“带头大哥”。Vite 6 的升级彻底向前迈了一步,把 CJS 甩在了身后,给前端开发带来了更快的启动、更好的兼容性和更清爽的代码。
所以,与其挣扎着想办法让 CJS 继续活下去,不如早早投靠 ESM,跟上 Vite 6 的节奏,让你的项目跑得更快更顺畅!🚀
参考链接
热门推荐
企业管理:定义、核心要素与实践指南
石家庄城中村改造最新进展:多栋住宅和一所幼儿园即将建设
揭秘海上运输:22层楼高的集装箱为何不会掉下来?
一次性逛吃昭化古城|玩遍历史+吃遍美食
全瓷牙VS烤瓷牙:六大维度对比,帮你做出明智选择
东城中医医院特聘专家刘汶:口苦是怎么回事?
生物质燃气的生产原料与供应链管理
拿破仑·波拿巴的生日:一位传奇领袖的生平与成就
如何畅玩《黑神话:悟空》?可能是首个基于大样本的设置建议
听劝~千万不要在深圳夜跑!
RVC吃显卡吗?RVC最低显卡要求【rvc模型官网】
夏天来了不一定要露腰露腿,看看这些高级感穿搭,照样很清爽养眼
如何分析投资亏损情况并进行合理计算?这种计算方法在风险管理中有何作用?
中国十大旅游胜地:从长城到鼓浪屿,领略自然人文之美
不同文件夹可以建立两个同名的文件吗?
北魏孝文帝改革:历史转折点与深远影响
千里香钓鱼小药的主要成分和使用技巧
华为ENSP中OSPF基础原理及配置命令详解
新手养虎皮鹦鹉冬季保暖全攻略:从温度到饮食的全方位指南
如何辨别真假房源?教你三招!
下截的意思是什么
反循环清孔工艺在旋挖桩中的优势
武广高铁正式进入350公里时速运营时代
别再被一个人对你好感动了,这样对你好的人,不是真的爱你
如何在数字时代高效沟通?揭示现代人联系的秘密
克莱三方签换交易评级:独行侠B- 黄蜂B+ 勇士B
逾期增多、交易量持续萎缩……解密上市银行信用卡业务!
如何正确评估基金回撤?这些回撤对你的投资策略有何影响?
孙中山与致公堂:从封建帮会到民主革命团体的转变
学金智媛棒球帽这样戴超有型!2024棒球帽穿搭范本,韩星同款品牌找给你