2.1 初始化项目
# 1. 初始化项目
mkdir hidie-mini-vue
cd hidie-mini-vue
pnpm init -y
2.2 集成TypeScript & Jest 测试环境
# 2. 安装 jest typescript
pnpm install jest typescript -D
# 初始化 ts
tsc --init
# 3. 安装babel 把 ESM 转为 CJS
# 安装babel 和 jest-babel
pnpm install -D babel-jest @babel/core @babel/preset-env
# 安装 Babel支持TypeScript
pnpm i -D @babel/preset-typescript
# jest支持 TS 语法
pnpm i -D @types/jest
package.json
{
"scripts": {
"test": "jest" // 使用 jest 测试环境
}
}
tsconfig.json
// tsconfig.json 设置支持jest
{
"lib": ["DOM","es6"], // 引入 DOM 和 ES6
"types": ["jest"], // 将 jest的类型声明文件 添加到编译中
"noImplicitAny": false, // 允许在表达式和声明中不指定类型
}
babel.config.js
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
};
// 配置 babel, 让 jest 可以识别ESM, Node-CJS 可以识别 ESM , 并且支持 TypeScript
2.2.1 测试环境
初始化测试
# 1. 初始化文件
mkdir src && cd src
mkdir reactivity && cd reactivity # vue3 响应式核心
touch sum.ts
mkdir test && cd test # 存放测试文件
touch index.spec.ts # xxx.spec.ts jest 自动匹配测试文件
sum.ts
// sum.ts
export function sum (a: number, b:number): number {
return a+b
}
index.spec.ts
// index.spec.ts
import { sum } from "../sum"
it("sum", () => {
expect(sum(1,1)).toBe(2)
})
运行测试 : pnpm test
测试通过说明 jest 集成测试环境完成 , 测试完成后删除测试代码文件
2.3 vscode 插件
实现 mini-vue 推荐安装插件