uniapp cli创建 vue3 + typeScript项目 配置eslint prettier husky

1 命令创建项目

复制代码
npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project

2 下载依赖

复制代码
npm install

3 填写appid

4 运行项目并且微信开发工具打开

复制代码
npm run dev:mp-weixin

5 安装 vscode 插件

复制代码
安装 **Vue Language Features (Volar)** :Vue3 语法提示插件
安装 **TypeScript Vue Plugin (Volar)** :Vue3+TS 插件

工作区禁用** Vue2 的 Vetur 插件(Vue3 插件和 Vue2 冲突)
作区禁用** @builtin typescript 插件(禁用后开启 Vue3 的 TS 托管模式)

uni-create-view :快速创建 uni-app 页面
uni-helper uni-app :代码提示
uniapp 小程序扩展 :鼠标悬停查文档

6 TS 类型校验

6.1 安装

复制代码
pnpm i -D miniprogram-api-typings @uni-helper/uni-app-types

6.2 tsconfig.js配置

7 代码统一风格

7.1 安装 eslint + prettier

复制代码
npm i -D eslint prettier eslint-plugin-vue @vue/eslint-config-prettier @vue/eslint-config-typescript @rushstack/eslint-patch @vue/tsconfig

7.2 新建 .eslintrc.cjs 文件,添加以下 eslint 配置

复制代码
/* eslint-env node */
require('@rushstack/eslint-patch/modern-module-resolution')

module.exports = {
  root: true,
  extends: [
    'plugin:vue/vue3-essential',
    'eslint:recommended',
    '@vue/eslint-config-typescript',
    '@vue/eslint-config-prettier',
  ],
  // 小程序全局变量
  globals: {
    uni: true,
    wx: true,
    WechatMiniprogram: true,
    getCurrentPages: true,
    getApp: true,
    UniApp: true,
    UniHelper: true,
    App: true,
    Page: true,
    Component: true,
    AnyObject: true,
  },
  parserOptions: {
    ecmaVersion: 'latest',
  },
  rules: {
    'prettier/prettier': [
      'warn',
      {
        singleQuote: true,
        semi: false,
        printWidth: 100,
        trailingComma: 'all',
        endOfLine: 'auto',
      },
    ],
    'vue/multi-word-component-names': ['off'],
    'vue/no-setup-props-destructure': ['off'],
    'vue/no-deprecated-html-element-is': ['off'],
    '@typescript-eslint/no-unused-vars': ['off'],
  },
}

7.3 配置 package.json

复制代码
{
  "script": {
    // ... 省略 ...
    "lint": "eslint . --ext .vue,.js,.ts --fix --ignore-path .gitignore"
  }
}

7.4 自动格式化代码

复制代码
npm run lint

8 GIT 工作规范流程

8.1初始化git

复制代码
git init

8.2 安装并初始化 husky 会生成 .husky 文件

复制代码
npx husky-init

8.3 安装 lint-staged

复制代码
npm i -D lint-staged

8.4 配置 package.json

复制代码
{
  "script": {
    // ... 省略 ...
  },
  "lint-staged": {
    "*.{vue,ts,js}": ["eslint --fix"]
  }
}

8.5 修改 .husky/pre-commit 文件

复制代码
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npm run lint-staged
相关推荐
开开心心就好5 小时前
批量提取PDF中的图片,直接导出原图
前端·javascript·支持向量机·智能手机·pdf·html·启发式算法
默_笙9 小时前
🏛 给 AI 配一间办公室:Harness Engineering 六大模块与它的实现
前端·javascript
linux_cfan11 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
郑州光合科技余经理12 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
天若有情67313 小时前
【纯前端小工具】公历生日转农历,批量查询每年农历生日对应的公历日期(GitHub Pages在线直接用)
前端·javascript·github pages·农历转换·lunisolar·网页小工具
林语琛14 小时前
我写的 switch…break 被 Babel 偷偷吞了
前端·javascript·babel
liuchangng14 小时前
Jev 模型研究:从生成式大模型到决策式模型——System One、RLCD 校准与采用边界
java·javascript·人工智能·python·深度学习
我命由我1234515 小时前
CSS - CSS 媒体查询 orientation
前端·javascript·css·html·css3·html5·js
志尊宝18 小时前
Vue3 零基础每日笔记(048):嵌套路由与命名视图——后台管理系统布局雏形
前端·javascript·vue.js·笔记·html5
@tangguo12319 小时前
npm 和 yarn 配置说明
前端·javascript·npm·node.js·yarn