创建TypeScript代码模板(NVS+Yarn+ESLint+Prettier+Husky)

Cui, Richard Chikun

本文笔者将带你在Github代码仓库创建TypeScript代码模板,并集成最新的代码开发工具,如:Node.js版本管理工具NVM for Windows、包管理器Yarn、静态代码检查工具ESLint、代码格式化工具Prettier、Git钩子(Hook)工具Husky等。

安装Visual Studio Code

在开始进行TypeScript开发之前,我们首先需要一个用于TypeScript开发的代码编辑器,类似的产品有VS Code、Atom、Sublime Text、Notepad++等等。我个人还是比较喜欢Visual Studio Code代码编辑器,有很强的代码编辑能力,支持丰富的插件功能。

可以通过以下步骤安装VS Code:

  • 打开浏览器,导航到Visual Studio Code - Code Editing. Redefined
  • 下载最新的稳定版本(Stable)的VS Code编辑器
  • 执行下载的安装文件进入安装导航,整个安装过程简单直接。
  • 启动VS Code编辑器,如果是在命令行状态下,进入你要开发的工程或项目文件夹,通过命令code .就可以加载工程内的所有文件。

创建Github代码仓库

首先我们通过Web页面创建Github代码仓库。

创建GitHub代码仓库(Repository)并:

  • 填写仓库名字(Repository Name),如typescript
  • 填写描述(Description,可选项),如TypeScript source template with modern tools
  • 选择访问级别公开(Public)或私有(Private),如选择Public
  • 勾选添加README.md说明文档
  • 勾选添加.gitignore忽略提交文件列表,并选择Node模板
  • 勾选添加许可,并选择MIT许可(MIT License)。关于如何选择许可类型可参考如何选择开源许可证? - 阮一峰的网络日志,文中决策图可以帮助你快速选择合适的许可类型。

点击创建仓库(Create repository)之后,我们的Github代码仓库就创建出来了。

安装Git for Windows

接下来我们要安装Git将代码仓库克隆(clone)到本地进行开发工作,我们需要到Git for Windows网站,点击页面Download按钮,下载最新的Git for Windows安装程序,如Git-2.35.1.2-64-bit.exe。

双击下载的安装程序执行安装:

  • 勾选Only show new options,并点击Install按钮。
  • 取消勾选View Release Notes并点击Finish按钮结束安装。

通过命令行命令git --version显示安装的Git版本并检查Git是否成功安装,成功安装后控制台会返回Git的版本号,如:

  1. git version 2.35.1.windows.2

克隆代码仓库到本地

  1. 打开浏览器跳转到我们刚刚创建的代码仓库页面,如: https://github.com/richardcuick/typescript。
  2. 点击Code按钮,复制HTTPS标签下面的代码仓库地址,如:https://github.com/richardcuick/typescript.git。
  3. 打开命令行,进入我们要创建代码仓库的目录,如@richardcuick
  4. 使用命令git clone <代码仓库地址>复制代码仓库到本地
  5. 进入复制的代码仓库目录,会看到如下文件:
  • .gitignore
  • LICENSE
  • README.md

安装Node.js

TypeScript语言是运行于Node.js框架之上的,所以我们需要安装Node.js。但是Node.js版本演变非常快,而且一般会具有LTS版本和最新特性的Current两个版本,所以我们需要一个合适的Node版本管理器对Node.js的版本进行管理,Node版本管理器的作用就是可以在不同版本之间快速切换Node.js而不用频繁、麻烦地卸载再安装。

卸载已安装的Node.js

为了安装Node.js版本管理工具需要先将已安装的Node.js卸载,如果你的电脑未安装过Node.js可以跳过此步,直接浏览"安装Node.js版本管理器NVM for Windows"。

想要完全干净地卸载Node.js可以通过命令行执行以下命令:

  1. 清除Package缓存:npm cache clean --force
  2. 卸载Node.js:wmic product where caption="Node.js" call uninstall
  3. 删除相关目录:
  1. rmdir /s /q %appdata%\npm
  2. rmdir /s /q %appdata%\npm-cache
  3. rmdir /s /q %programfiles%\Nodejs
  4. rmdir /s /q %programfiles(x86)%\Nodejs
  5. rmdir /s /q %homepath%\.npmrc
  6. rmdir /s /q %homepath%\AppData\Local\Temp\npm-cache

安装Node.js版本管理器NVM for Windows

Node的版本管理工具有NVM for WindowsnvsVolta三个,使用最多的是NVM for Windows。

  1. NVM for Windows发布页面下载最新版本的nvm-setup.zip文件,解压缩,执行nvm-setup.exe进行安装。

  2. NVM for Windows安装路径默认为C:\Users\<User Name>\AppData\Roaming\nvm

  3. Node.js安装路径默认为C:\Program Files\nodejs

打开控制台,执行nvm ls查看已安装的Node.js版本命令检查是否已成功安装:

  1. nvm ls
  2. No installation recognized.

安装LTS版本的Node.js

Node.js版本包括历史版本、长期支持的LTS版本(这个版本是Node.js推荐大多用户使用的,也是各大云供应商在自己的云服务中支持的版本),以及当前最新特性版Current版本(这个版本会包含所有最新的功能,但多数情况下不受云服务运行时支持)。

我们使用NVM for Windows可以通过两个命令来查看和安装Node.js版本:

  • nvm list available命令列出所有可用(可安装)的Node.js版本。
  • nvm install <version>命令安装对应版本的Node.js,其中version可以是latest或lts来安装具有最新特性的版本或LTS版本。例如,当前LTS版本为16.14.2,推荐更多的用户使用;而具有最新特性的当前版本为17.8.0。

我们推荐安装LTS版本:

  • 推荐使用命令nvm install lts安装LTS版本的Node.js。
  • 安装后可使用nvm ls命令列出所有已经安装的版本。
  • 使用nvm use <version>命令指定Node.js版本,这里的version不能使用latest或tls,必须是nvm ls命令列出的指定的版本号。如16.14.2。

P.S: 如果在执行nvm use <version>命令时遇到如下错误,建议检查Node.js安装路径是否为空目录,大部分时候是由于残留了原来安装的Node.js下面的文件和目录,删除即可。

  • exit 145: The directory is not empty
  • exit 32: The process cannot access the file because it is being used by another process.

通过以下命令行命令检查Node.js和npm包管理器的版本来检查Node.js是否已被正确安装:

  • node --version
  • npm --version

激活yarn 2包管理器

对于16.10以上版本的Node.js已经通过Corepack内置了最新的yarn包管理器,yarn与npm一样都是包管理器,用来管理程序包的安装、卸载以及依赖关系,yarn从版本2开始对并行加载有了更好的支持,能快速进行包的更新,速度和效率上都远胜于npm,所以我们建议使用yarn取代npm来管理我们的程序包。

其中支持yarn的Corepack默认已在16.10以上版本的Node.js安装中,不过是禁用状态,所以需要我们激活它:

  1. corepack enable

然后我们就可以使用版本2的yarn初始化我们的TypeScript工程项目了:

  1. yarn init -2

此命令会生成如下文件/目录:

  • .editorconfig - 此文件定义了编辑器的缩进及文本转行格式
  • .yarn目录 - 此目录用来保管安装的程序包
  • package.json - 程序包的说明文件
  • .yarnrc.yml - 说明了程序包保管路径
  • yarn.lock

安装TypeScript

  • 本地开发安装TypeScript包:yarn add -D typescript

  • 使用命令yarn tsc -v检查安装TypeScript的版本。

  • 创建src目录:md src

  • 进入src目录:cd src

  • 创建index.ts,内容如下:

  1. let message: string = 'Hello, World!';
  2. console.log(message);
  • 运行TypeScript命令行:npm tsc index.ts ,生成index.js文件。

  • 运行node index.js,执行Javascript文件。

  • yarn tsc --init初始化tsconfig.json文件,默认配置为:

  1. {
  2. "compilerOptions": {
  3. "target": "es2016",
  4. "module": "commonjs",
  5. "strict": true,
  6. "esModuleInterop": true,
  7. "skipLibCheck": true,
  8. "forceConsistentCasingInFileNames": true
  9. }
  10. }

参考标准项目目录结构如下:

  1. project folder\
  2. |---- dist\
  3. |---- src\
  4. |---- test\
  5. |---- package.json
  6. |---- tsconfig.json

修改tsconfig,更新如下项目:

  1. {
  2. "compilerOptions": {
  3. "rootDir": "src",
  4. "sourceMap": true,
  5. "outDir": "dist",
  6. },
  7. "include": ["src/**/*"],
  8. "exclude": [".yarn", "**/*.spec.ts"]
  9. }

配置完,保存并运行yarn tsc,就可以看到自动生成了dist目录,并且在目录中生成了index.js和index.js.map文件。

安装ESLint

ESLint是静态代码检查工具,配合TypeScript使用可以帮助检查TypeScript的语法和代码风格。

  • 添加ESLint到当前工程,yarn add -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin

通过命令行命令code .eslintrc或打开VS Code创建.eslintrc文件,增加内容如下:

  1. {
  2. "root": true,
  3. "parser": "@typescript-eslint/parser",
  4. "plugins": [
  5. "@typescript-eslint"
  6. ],
  7. "extends": [
  8. "eslint:recommended",
  9. "plugin:@typescript-eslint/eslint-recommended",
  10. "plugin:@typescript-eslint/recommended"
  11. ]
  12. }

通过命令行命令code .eslintignore或打开VS Code创建.eslintignore文件,增加内容如下:

  1. # Ignore artifacts:
  2. .yarn
  3. dist

运行命令yarn eslint . --ext .ts执行代码静态检查,运行命令yarn eslint . --ext .ts --fix执行代码修复。

通过命令npm set-script lint "eslint . --ext .ts"向package.json添加lint(静态代码检查)脚本:

  1. {
  2. "scripts": {
  3. "lint": "eslint . --ext .ts",
  4. }
  5. }
  • 添加脚本后,可直接使用yarn lint命令进行静态代码检查。

安装Prettier

Prettier是优化代码格式的工具,可优化JavaScript、TypeScript、JSON等代码及配置文件。

  • 使用命令yarn add -D --exact prettier安装Prettier。
  • 创建文件.prettierrc.json,内容如下:
  1. {}
  • 创建文件.prettierignore,内容如下:
  1. # Ignore artifacts:
  2. dist
  3. coverage
  • 执行命令优化文件格式:yarn prettier --write .
  • 执行命令检查文件格式:yarn prettier --check .

命令行输出如下:

  1. C:\@richardcuick\ts>yarn prettier --write .
  2. yarn run v1.22.18
  3. $ C:\@richardcuick\ts\node_modules\.bin\prettier --write .
  4. .eslintrc.json 111ms
  5. .prettierrc.json 2ms
  6. dist\index.js 9ms
  7. package-lock.json 98ms
  8. package.json 21ms
  9. src\index.ts 274ms
  10. tsconfig.json 9ms
  11. Done in 1.04s.
  12. C:\@richardcuick\ts>yarn prettier --check .
  13. yarn run v1.22.18
  14. $ C:\@richardcuick\ts\node_modules\.bin\prettier --check .
  15. Checking formatting...
  16. All matched files use Prettier code style!
  17. Done in 0.69s.
  18. C:\@richardcuick\ts>

因为同时安装了ESLint和Prettier会导致静态代码检查和格式化之间的一些冲突,可以通过安装eslint-config-prettier程序包解决类似冲突。

  • 执行yarn add -D eslint-config-prettier安装此程序包
  • 运行code .eslintrc命令或编辑.eslintrc文件添加"prettier"到extends集合,如下:
  1. {
  2. "extends": [
  3. "some-other-config-you-use",
  4. "prettier"
  5. ]
  6. }

安装Husky

Husky是Git hooks程序包,帮助开发人员增加提交代码前的步骤,如进行静态代码检查或格式化文件。

  1. 通过命令yarn add -D husky lint-staged安装Husky和Lint-Staged
  2. 如果你的程序包不是私有的,还要发布到类似npmjs.com的注册中心,请安装pinst程序包。yarn add -D pinst
  3. 执行命令yarn husky install激活Git钩子(Hooks)
  4. 为了安装后能自动激活钩子,编辑package.json文件,如下:
  1. // package.json
  2. {
  3. "private": true, // ← your package is private, you only need postinstall
  4. "scripts": {
  5. "postinstall": "husky install"
  6. }
  7. }

但是如果你的包不是私有的,你要发布到注册中心如npmjs.com,那么你需要使用pinst禁用postinstall。否则,postinstall将会在别人安装你的程序包的时候运行并报错。

  1. // package.json
  2. {
  3. "private": false, // ← your package is public
  4. "scripts": {
  5. "postinstall": "husky install",
  6. "prepack": "pinst --disable",
  7. "postpack": "pinst --enable"
  8. }
  9. }

yarn husky add .husky/pre-commit "yarn lint-staged"

编辑package.json文件如下,在提交代码前进行静态代码检查和格式优化:

  1. {
  2. "lint-staged": {
  3. "src\\**\\*.ts": ["eslint", "prettier --write"]
  4. }
  5. }

创建TypeScript代码模板(NVS+Yarn+ESLint+Prettier+Husky)的更多相关文章

  1. 快速新建并配置一个eslint+prettier+husky+commitlint+vue3+vite+ts+pnpm的项目

    前置准备 一台电脑 vscode pnpm vscode插件:ESLint v2.2.6及以上 vscode插件:Prettier - Code formatter v9.5.0及以上 vscode插 ...

  2. eslint+prettier+husky+lint-staged 统一前端代码规范

    eslint+prettier+husky+lint-staged 统一前端代码规范 遵循编码规范和使用语法检测,可以很好的提高代码的可读性,可维护性,并有效的减少一些编码错误. 1.终极目标 团队中 ...

  3. 创建react项目并集成eslint/prettier/commit-lint

    创建 react 项目 npx create-react-app jira-new --template typescript 如果不想使用 TS,而要用 JS 的话,则删除 -template ty ...

  4. ESLint + Prettier + husky + lint-staged 规范统一前端代码风格

    写在前面: ESLint: Find and fix problems in your JavaScript code. Prettier: Prettier is an opinionated co ...

  5. nodejs + typescript + koa + eslint + typescript eslint + prettier + webstorm

    ESLint 安装 yarn add -D eslint 生成配置文件 yarn eslint --init cli 选项 How would you like to use ESLint? To c ...

  6. 前端规范之JS代码规范(ESLint + Prettier)

    代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到或思考过这一问题.而随着前端应用的大型化和复杂化,越来越多的前端团队也开始重视代码规范.同样,前段时间,笔者所在的团队也开展了一 ...

  7. eslint prettier editrorconfig - 写出干净的前端代码

    FConfidence 关注 2018.12.30 02:38* 字数 2912 阅读 195评论 0喜欢 0 VSCode 插件安装 Prettier - Code Formatter ESLint ...

  8. electron教程(番外篇二): 使用TypeScript版本的electron, VSCode调试TypeScript, TS版本的ESLint

    我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(番外篇一): 开发环境及插件, VSCode调试, ESLint + Google ...

  9. Vue2/3 项目中的 ESLint + Prettier 代码检测格式化风格指南

    Vue2/3 项目中的 ESLint + Prettier 代码检测格式化风格指南 因为平时都是使用 VSCode ESLint + Prettier 检测格式化不规范代码,但是随着接手的项目越来越多 ...

随机推荐

  1. WIN10:全选一个文件夹中的所有文件

  2. tensorflow源码解析之common_runtime-device

    目录 核心概念 device device_factory device_mgr device_set 1. 核心概念 在framework部分,我们介绍了DeviceAttributes和Devic ...

  3. Python模板引擎Jinja2使用简介

    原文链接 背景 最近在项目开发中,需要针对 Jenkins 项目进行配置,Jenkins 的 job 配置采用的是 xml,在维护配置模板的过程中就遇到了问题,因为逐步发现配置灵活性超出了字符串的范畴 ...

  4. 使用flask进行mock接口

    在测试日常过程中,我们经常会遇到因为环境问题,或者是因为上下游,前后端开发进度不一,提测时间不一等情况.这时候我们可以通过mock的方式去完成一些操作.今天给大家分享一个通过flask去mock接口, ...

  5. Redis 中的 set 和 sorted set 如何使用,源码实现分析

    set 和 sorted set 前言 set 常见命令 set 的使用场景 看下源码实现 insert dict sorted set 常见的命令 使用场景 分析下源码实现 ZADD ZRANGE ...

  6. Spring Boot 自定义Starter 可能引发的问题(Error)

    如果你的项目出现: Consider defining a bean of type 'com.wy.helloworld_spring_boot_starter.PersonService' in ...

  7. exit函数和return语句

    exit函数是c语言的库函数,有一个整型的参数,代表进程终止,这个函数需<stdlib.h>头文件 在函数中写return只是代表函数终止了,不管在程序的任何位置调用exit那么进程就立即 ...

  8. python 模块之 selenium 自动化使用教程

    一.安装 pip install Selenium 二.初始化浏览器 Chrome 是初始化谷歌浏览器 Firefox 是初始化火狐浏览器 Edge 是初始化IE浏览器 PhantomJS 是一个无界 ...

  9. 使用 Mosh 来优化 SSH 连接

    1.什么是Mosh Mosh表示移动Shell(Mobile Shell),是一个用于从客户端跨互联网连接远程服务器的命令行工具.它能用于SSH连接,但是比Secure Shell功能更多.它是一个类 ...

  10. SpringMVC解决前端传来的中文字符乱码问题

    以前乱码问题通过过滤器解决,而SpringMVC给我们提供了一个过滤器,可以在web.xml中添加以下配置 修改了xml文件需要重启服务器! <!--配置解决中文乱码过滤器--> < ...