【uniapp&微信小程序】vue3+ts+vite+pinia+eslint+prettier+husky项目搭建

本文介绍了如何从零开始搭建一个基于uniapp的Vue3+TypeScript+vite项目,详细讲解了配置Pinia状态管理、设置ESLint和Prettier代码规范,以及如何解决两者冲突和使用husky确保提交前的代码格式化。文章还涵盖了创建项目、安装依赖和启动开发环境的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

一.创建项目

二.配置Pinia

三.配置eslint

四.配置prettier

五.解决eslint和prettier冲突

六.配置husky

七.总结


前言

        【uniapp微信小程序系列】将持续更新分享使用uniapp开发小程序的干货文章。本篇文章是从0搭建uniapp项目,如果是个人项目或者公司无代码规范等,可以参考本篇vue3+ts+vite+pinia搭建项目,如果有规范要求,或者想接入规范,那么本篇文章将从0搭建vue3+ts+vite+pinia项目,并接入代码规范eslint+prettier,及代码提交钩子husky配置。

一.创建项目

        uniapp官网提供了多个版本下载方式,这里我们选择Vue3/Vite版,创建以 typescript 开发的工程:

npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project

创建好后安装依赖并启动:

# 安装依赖
yarn install

# 启动开发环境
yarn dev:mp-weixin

因为我们是开发微信小程序,这里启动后会编译出dist包,在微信开发者工具打开地址dist/dev/mp-weixin,即可预览小程序的效果,并会同步编译更新。

二.配置Pinia

        Pinia这里就不过多介绍,不懂的小伙伴可以看这篇文章,里面有详细介绍及使用方法: 快速搞懂Pinia及数据持久化存储(详细教程)http://t.csdn.cn/dSakD

安装Pinia依赖:

yarn add pinia

main.ts中引入并挂载:

import { createPinia } from "pinia";
import { createSSRApp } from "vue";
import App from "./App.vue";
export function createApp() {
  const app = createSSRApp(App);
  app.use(createPinia())
  return {
    app,
  };
}

新建src/store/user/index.ts,这里以user模块为例:

 import {ref} from "vue"
 import {defineStore} from "pinia"
 // 用户user模块
 export const useUserStore = defineStore("user", () => {
   // token信息
   const token = ref("")
   // 用户信息
   const userInfo = ref({
     id: "",
     name: "测试员",
     phone: "",
   })
   return {
     token,
     userInfo,
   }
 })

接下来就可以进行全局数据的存取:

<template>
  <view>
  {{ userStore.userInfo.name }}
  </view>
</template>

<script setup lang="ts">
import { useUserStore } from "@/store/user";
const userStore = useUserStore()
</script>

到此变成功在项目中引入并使用Pinia了,关于Pinia的更多细节就看上面那篇文章连接就好。

三.配置eslint

安装依赖

yarn add -D eslint

eslint初始化命令

npx eslint --init

初始化选项选择 

(1) How would you like to use ESLint?

选择:To check syntax, find problems, and enforce code style

(2) What type of modules does your project use?

选择:JavaScript modules (import/export)

(3) Which framework does your project use?

选择:Vue.js

(4) Does your project use TypeScript?

选择:Yes

(5) Where does your code run?

选择:Browser

(6) What format do you want your config file to be in?

选择:JavaScript

(7) Would you like to install them now?

选择:Yes

(8) Which package manager do you want to use?

选择:yarn

此时在项目中会产生一个.eslintrc.js文件,因为eslint默认是不会解析.vue后缀文件的,所以还需要额外的解析器,但初始的.eslintrc.js文件中extends配置顺序原因@typescript-eslint/parser把vue-eslint-parser覆盖了。所以这里需要做些修改,配置如下:

module.exports = {
  'env': {
    'browser': true,
    'es2021': true,
    'node': true
  },
  'extends': [
    'eslint:recommended',
    'plugin:vue/vue3-essential',
    'plugin:@typescript-eslint/recommended'
  ],
  'parser': 'vue-eslint-parser',
  'parserOptions': {
    'ecmaVersion': 'latest',
    'parser': '@typescript-eslint/parser',
    'sourceType': 'module'
  },
  'plugins': [
    'vue',
    '@typescript-eslint'
  ],
  'rules': {
    'vue/multi-word-component-names':'off',
    'quotes': ['error', 'single']
  }
}

当我们启动微信小程序时在根目录会产生dist文件,而这个文件我们也不需要eslite检测,这时候就需要将文件设置为不检测,在根目录新建.eslintignore 文件,将不需要检测文件路径写入其中即可,如下:

# 忽略dist目录下文件的语法检查

/dist

 在package.json文件中的scripts中添加lint命令:

{
    "scripts": {
        // eslint . 为指定lint当前项目中的文件
        // --ext 为指定lint哪些后缀的文件
        // --fix 开启自动修复
        "lint": "eslint . --ext .vue,.js,.ts,.jsx,.tsx --fix"
    }
}

 运行命令即可校验代码,如有其他后缀文件加入即可。

四.配置prettier

安装依赖

yarn add -D prettier
yarn add -D eslint-config-prettier #eslint兼容的插件
yarn add -D eslint-plugin-prettier #eslint的prettier

在根目录下面添加.prettierrc.js文件夹,然后将下面的配置添加到其中(我这里只做演示,具体配置根据需要来):

module.exports = {
 // 一行最多多少个字符
	printWidth: 150,
	// 指定每个缩进级别的空格数
	tabWidth: 2,
	// 使用制表符而不是空格缩进行
	useTabs: true,
	// 在语句末尾是否需要分号
	semi: true,
	// 是否使用单引号
	singleQuote: true,
	// 更改引用对象属性的时间 可选值"<as-needed|consistent|preserve>"
	quoteProps: 'as-needed',
	// 在JSX中使用单引号而不是双引号
	jsxSingleQuote: false,
	// 多行时尽可能打印尾随逗号, 可选值"<none|es5|all>",默认none
	trailingComma: 'es5',
	// 在对象文字中的括号之间打印空格
	bracketSpacing: true,
	// jsx 标签的反尖括号需要换行
	jsxBracketSameLine: false,
	// 在单独的箭头函数参数周围包括括号 always:(x) => x \ avoid:x => x
	arrowParens: 'always',
	// 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码
	rangeStart: 0,

}

在package.json文件中的scripts中添加format命令:

{
    "scripts": {
        "format": "prettier --write \"./**/*.{html,vue,ts,js,json,md}\"",
    }
}

运行命令会将项目中文件格式化一遍,如有其他后缀文件加入即可。

五.解决eslint和prettier冲突

        配置完成prettier肯定会和eslint发生冲突,根本原因就是eslint有部分规则与prettier冲突了,这里社区已经为我们提供了解决方案,即:

eslint-plugin-prettier:基于 prettier 代码风格的 eslint 规则,即eslint使用pretter规则来格式化代码。

eslint-config-prettier: 禁用所有与格式相关的 eslint 规则,解决 prettier 与 eslint 规则冲突

 安装依赖

yarn add eslint-config-prettier eslint-plugin-prettier -D

接下来在.eslintrc.js文件的extends数组末尾加上'plugin:prettier/recommended',其作用是:

1.继承.prettierrc.js文件规则

2.开启rules的"prettier/prettier": "error"

3.eslint fix同时执行.prettierrc.js格式化

这时候eslint和prettier的冲突算是解决啦。

六.配置husky

        上面我们已经配置了eslint和prettier各自的命令,但是在实际项目中不能保证每位成员提交代码前都运行格式化命令,那么怎么确保提交代码的质量呢,这时候就需要用到husky了。

husky是用来管理 git hook 的工具,即代码提交过程中会触发的钩子。

安装依赖

yarn add husky -D

在package.json文件中的scripts中添加prepare命令 :

  "scripts": {
    "prepare": "husky install",
  },

其他成员拉项目装依赖的时候就会自动执行该命令来安装husky,我们这里直接yarn run prepare

这时候根目录会产生一个.husky文件,然后使用husky命令添加pre-commit钩子,运行:

yarn husky add .husky/pre-commit "yarn run lint && yarn run format"

运行上面命令后,会在.husky文件下生成一个pre-commit文件,内容如下

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

yarn run lint && yarn run format

这之后,当提交代码运行git commit 命令时,就会执行 yarn run lint 和 yarn run format 命令,当有报错时,代码便不会提交成功,如此一来也保障了代码仓库代码的质量与格式。

七.总结

        本篇文章主要以vue3+ts+vite+pinia项目为基础,再引入eslint+prettier+husky来规范代码质量与格式,这其中还有很多配置后续会继续完善更新(如stylelint的引入等)。


推荐阅读

快速搞懂Pinia及数据持久化存储

Print.js实现打印pdf,HTML,图片

多终端响应式开发(Bootstrap栅格系统原理及实现)

vue中指令式调用封装组件

<think>好的,我现在需要帮用户解决如何在UniApp中使用TypeScript和Vue3搭建小程序框架的问题。用户已经提供了几个引用资料,我需要先仔细阅读这些引用内容,理解其中的步骤和相关技术栈。 首先,引用[1]提到使用命令行构建项目,并且提到了VSCode和微信开发者工具的配置。引用[2]和[3]则给出了具体的技术栈,比如Vue3Pinia、TypeScript、Vite等,以及项目初始化的命令。看起来用户需要的是一个详细的步骤指南,涵盖从项目初始化到配置再到编译运行的整个过程。 我需要整理这些信息,按照逻辑顺序分步骤说明。首先应该是环境准备,包括安装Node.js、VSCode插件如uni-app插件。然后是项目初始化,使用npx degit命令下载模板,这一步引用[2]和[3]都有提到。接下来是依赖安装,需要确保安装了必要的依赖,比如@types库,以支持TypeScript。然后可能涉及配置调整,比如修改vite.config.tstsconfig.json,确保TypeScript和UniApp的兼容性。 接下来是状态管理,引用中提到使用Pinia,所以需要指导用户如何集成Pinia项目中。然后是代码规范和格式化工具,如ESLintPrettierHusky,这些在引用[3]里有提到,需要说明如何配置这些工具以提高代码质量。 最后是编译和运行,需要指导用户如何添加编译脚本,运行项目,并导入到微信开发者工具中。可能还需要提醒用户一些注意事项,比如路径别名配置或者TypeScript类型声明的处理。 同时,用户要求生成相关问题,我需要根据内容提出几个相关的问题,比如性能优化、跨平台处理、TS类型定义等,这些问题应该与教程内容相关,帮助用户进一步深入学习。 在整理过程中,要确保所有的命令正确,比如项目初始化的命令是否正确,依赖安装是否需要特定版本。还要注意引用标记的正确添加,每个步骤中引用的来源要对应正确的引用编号。比如在项目初始化部分,引用[2]和[3]都提到了使用npx degit命令,需要正确标注。 另外,需要确保技术细节准确,比如Vite的配置是否需要特别处理,UniApp插件在VSCode中的具体名称是什么,是否需要额外配置。可能还需要提及如何解决常见问题,比如类型错误或者编译失败的情况。 最后,整个回答结构要清晰,分步骤说明,每个步骤有详细的操作和代码示例,如package.json中的脚本命令,配置文件的修改内容。同时,语言要简洁明了,符合中文表达习惯,避免使用过于专业的术语,让用户能够轻松跟随教程操作。</think>### 使用 TypeScript 和 Vue3UniApp搭建小程序框架教程 #### 一、环境准备 1. **安装 Node.js** 确保安装 Node.js 16+ 版本,并配置 npm/yarn 包管理器。 2. **安装 VSCode 插件** - `uni-app` 插件:提供语法高亮、代码提示等功能[^1] - `TypeScript Vue Plugin (Volar)`:支持 Vue3 + TS 开发 #### 二、项目初始化 1. **使用官方模板创建项目** 执行以下命令生成 Vue3 + TSUniApp 项目: ```bash npx degit dcloudio/uni-preset-vue#vite-ts my-project ``` 此模板基于 Vite5 + Vue3 + TS 构建,支持多平台编译[^2][^3]。 2. **安装依赖** ```bash cd my-project npm install # 或使用 yarn yarn install ``` #### 三、核心配置 1. **TypeScript 支持** - 在 `tsconfig.json` 中添加 UniApp 类型声明: ```json { "compilerOptions": { "types": ["@dcloudio/types"] } } ``` - 安装类型定义包: ```bash npm install @types/wechat-miniprogram @dcloudio/types -D ``` 2. **Vite 配置** 修改 `vite.config.ts` 以支持小程序路径别名: ```typescript import { defineConfig } from &#39;vite&#39; import uni from &#39;@dcloudio/vite-plugin-uni&#39; export default defineConfig({ plugins: [uni()], resolve: { alias: { &#39;@&#39;: path.resolve(__dirname, &#39;src&#39;) } } }) ``` #### 四、状态管理(Pinia 集成) 1. **安装 Pinia** ```bash npm install pinia @pinia/nuxt ``` 2. **在 `main.ts` 中初始化** ```typescript import { createApp } from &#39;vue&#39; import { createPinia } from &#39;pinia&#39; import App from &#39;./App.vue&#39; const app = createApp(App) app.use(createPinia()) app.mount(&#39;#app&#39;) ``` #### 五、代码规范配置 1. **ESLint + Prettier** - 安装依赖: ```bash npm install eslint eslint-plugin-vue @typescript-eslint/parser @typescript-eslint/eslint-plugin prettier eslint-config-prettier -D ``` - 配置 `.eslintrc.cjs` 和 `.prettierrc`(参考模板预设) 2. **Husky 提交拦截** ```bash npx husky-init && npm install ``` #### 六、编译与运行 1. **添加小程序编译脚本** 在 `package.json` 中添加: ```json "scripts": { "build:weapp": "uni build -p weapp" } ``` 2. **启动开发模式** ```bash npm run dev:weapp ``` 3. **导入微信开发者工具** - 将生成的 `dist/dev/weapp` 目录导入微信开发者工具 - 代码变更后会自动热更新 #### 七、关键注意事项 1. **路径引用规范** 小程序平台需使用相对路径 `./` 而非别名 `@/`,需通过构建工具自动转换。 2. **TS 类型定义扩展** 在 `src/types` 目录下扩展 UniApp 接口: ```typescript declare module &#39;@vue/runtime-core&#39; { interface ComponentCustomProperties { $api: typeof api } } ``` ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琢鸣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值