TS项目初始化(Vitest+Eslint+Prettier)

TS项目初始化(Vitest+Eslint+Prettier)

本文首发于:TS项目初始化(Vitest+Eslint+Prettier) -Aiysosis Blog(aiysosis.ink),未经允许请勿转载。

前言

本文主要用于TS项目的快速初始化,使用yarn作为包管理器,使用Vitest代替Jest,因为Vitest提供了对TS的原生支持,不需要配置babel,且语法与Jest保持一致,具有比较小的迁移成本。Eslint+Prettier结合Vscode的自动格式化,让代码更加美观。

初始化

创建项目文件,首先初始化npm环境。

yarn init
#or
yarn init -y

-y默认初始化时所以的提问都回答yes。初始化成功,package.json文件被创建。

安装依赖

依赖列表(全部安装为开发依赖即可)。

@typescript-eslint/eslint-plugin
@typescript-eslint/parser
eslint
eslint-config-prettier
eslint-plugin-prettier
prettier
typescript
vitest

使用yarn安装依赖。

yarn add --dev @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint eslint-config-prettier eslint-plugin-prettier prettier typescript vitest 

配置typescript

创建tsconfig.json文件,或者执行:

npx tsc --init

最终配置:

//tsconfig.json
{
  "compilerOptions": {
    "target": "es2016",                                  
    "module": "commonjs",                                
    "rootDir": "./",                                  
    "baseUrl": "./",                                  
    "paths": {
      "@/*":["./src/*"]//路径别名 @->src
    },                                      
    "types": ["vitest/globals"],//vitest 类型引入                               
    "allowJs": true,                                  
    "sourceMap": true,//便于 debug                               
    "esModuleInterop": true,                             
    "forceConsistentCasingInFileNames": true,            
    "strict": true,                                      
    "noImplicitAny": false,//视使用情况而定                            
    "skipLibCheck": true                                 
  }
}

配置vitest

Getting Started | Guide | Vitest

配置文件

创建vitest.config.ts,测试文件名统一为:*.spec.ts

//vitest.config.ts
import { defineConfig } from "vitest/config";
import path from "path";

export default defineConfig({
	test: {
		globals: true,
	},
	resolve: {
        //别名配置,和tsconfig中的alias对应
		alias: [
			{
				find: /^@/,//这里必须使用正则表达式
                //把正则匹配到的地方,@->src
				replacement: path.resolve(__dirname, "./src"),
			},
		],
	},
});

断点调试

接下来启动vscode的断点调试,否则可能出现打上断点也不会自动暂停调试的问题。

Debugging | Guide | Vitest

点击vscode左侧的debug&run图标,可以看到这样的页面:

点击划红线部分的“create a launch.json file” 会在工作区创建launch.json文件(弹出框会让选择平台,选node即可),填入以下配置(来自vitest官方文档)。

{
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Debug Current Test File",
      "autoAttachChildProcesses": true,
      "skipFiles": ["<node_internals>/**", "**/node_modules/**"],
      "program": "${workspaceRoot}/node_modules/vitest/vitest.mjs",
      "args": ["run", "${relativeFile}"],
      "smartStep": true,
      "console": "integratedTerminal"
    }
  ]
}

添加命令

在package.json的“scripts”中添加调试命令(没有”scripts“就自己创建)。

"scripts": {
    "test": "vitest"
  },

安装插件

记得安装Vitest的插件

配置Eslint

Configuring ESLint - ESLint - Pluggable JavaScript Linter

首先配置Eslint,创建.eslintrc.js文件。

//.eslintrc.js
module.exports = {
	root: true,
	parser: "@typescript-eslint/parser",
    //添加了prettier的拓展
	extends: ["prettier/@typescript-eslint", "plugin:prettier/recommended"],
	plugins: ["@typescript-eslint"],
	env: {
		browser: true,//window对象在这里
		node: true,
	},
	rules: {
        //这些都可以自定义
		"@typescript-eslint/no-explicit-any": "off",//可以用any
	},
};

记得在Vscode中添加eslint的拓展。

配置Prettier

Options · Prettier

创建.prettierrc文件,填入配置:

{
    "tabWidth": 4,//缩进的宽度
    "useTabs": true,//缩进用tab,不用空格
    "semi": true,//末尾添加分号
    "singleQuote": false,//单引号
    "TrailingCooma": "all",//对象或数组的项末尾自动加逗号
    "bracketSpacing": true,//对象,数组括号与文字之间加空格 { foo: bar }
    "jsxBracketSameLine": false,
    "arrowParens": "avoid",//箭头函数单一参数是否省略括号
    "prettier.printWidth": 120//单行的长度
}

记得安装Pritter的拓展。

格式化工具&自动格式化

修改默认格式化工具

打开File -> Preference(偏好设置) -> Settings。

在搜索框输入editor.defaultFormatter,选择Prettier - Code formatter。这里左上角我选择在Workspace(工作区)中配置,而不是在User中全局配置。可以根据个人需求自行选择。

启动自动格式化

打开File -> Preference(偏好设置) -> Settings。

在搜索框输入format,勾选Format On Paste(粘贴时格式化)以及Format On Save(保存时格式化)。

大功告成!

配置git

初始化仓库。

git init

接下来创建.gitignore文件,填入以下内容,让git忽略掉node_modules里的包。

#.gitignore
node_modules

随便测试下

随便写点文件:

pathTest用来测试我们的别名,看看能否正常运行。

//pathTest
//a,b都是any类型,没有报错
export function add(a, b) {
	return a + b;
}

然后写一个单元测试,main.spec.ts

//main.spec.ts
//使用alias(别名)引入路径
import { add } from "@/pathTest";

describe("main", () => {
	test("happy path", () => {
		expect(add(1, 1)).toBe(2);
	});
});

跑一下单元测试

npm run test

顺利通过。

接下来试试断点调试:

打上断点,左边绿色箭头就是Vitest插件为我们提供的很方便的测试运行按钮(没有的话重启一下vscode)。

这里右键点击箭头,选择debug test,可以看到测试顺利在断点处暂停了:

至此环境配置顺利结束👏👏👏🎉🎉🎉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值