【UniApp +Vite + Vue3 + TypeScript + Pinia】 项目搭建

demongao
3996
2023-04-05

基于 UniApp +Vite + Vue3 + TypeScript + Pinia 项目搭建

UniApp 工程搭建

npx degit dcloudio/uni-preset-vue#vite-ts 项目名称

参考链接

uni-app vue-cli 工程创建

配置 Prettier

配置ESLint

1. 引入ESLint

npx eslint --init

第一个问题是:

  • 你希望用 ESLint 来干嘛?
  • 我们选择最全面的那个:检查语法,发现问题,并强制统一代码样式
$ npm init @eslint/config
? How would you like to use ESLint? …
  To check syntax only
  To check syntax and find problems
❯ To check syntax, find problems, and enforce code style

第二个问题是:

  • 你的项目用的是什么模块系统?
  • 因为是运行在浏览器端,选择 ESModule
? What type of modules does your project use? …
❯ JavaScript modules (import/export)
  CommonJS (require/exports)
  None of these

第三个问题是:

  • 你用的什么框架?
  • 选择 Vue
? Which framework does your project use? …
  React
❯ Vue.js
  None of these

第四个问题是:

  • 你是否使用 TypeScript?
  • 选择 Yes
? Does your project use TypeScript? › No / Yes

第五个问题是:

  • 你的代码运行在什么环境?(这个可以多选)
  • 选择 Browser 浏览器环境
 ? Where does your code run? …  (Press <space> to select, <a> to toggle all, <i> to invert selection)
 Browser
 Node

第六个问题是:

  • 你想定义怎样的代码风格?
  • 选择使用一个流行的代码风格
? How would you like to define a style for your project? …
❯ Use a popular style guide
  Answer questions about your style

第七个问题是:

  • 你想使用哪个样式风格?
  • standard-with-typescript
Which style guide do you want to follow? · 
> standard-with-typescript

第八个问题是:

  • 配置文件用什么格式?
  • 就选 JavaScript 吧(生成 eslintrc.js 文件)
? What format do you want your config file to be in? …
❯ JavaScript
  YAML
  JSON

第九个问题是:

  • 你是否想立刻安装
  • 选择是
Would you like to install them now? Yes

第十个问题是:

  • 选择哪个包管理工具
  • 我选择的是pnpm
Which package manager do you want to use? · pnpm

2. 解决ESLint和Prettier规则冲突问题

ESLintPrettier 组合, 以 Prettier 为主, 不符合 Prettier 的标准时, 会报一个 ESLint 错误, 同时也可以使用eslint --fix 来进行格式化.

1. 安装 eslint-config-prettier、eslint-plugin-prettier 和 prettier

pnpm add -D eslint-config-prettier eslint-plugin-prettier prettier

2. 修改 eslintrc 文件

{
  "extends": [
    "plugin:prettier/recommended"
  ]
}

// 相当于
{
  "extends": ["prettier"],
  "plugins": ["prettier"],
  "rules": {
    "prettier/prettier": "error",
    "arrow-body-style": "off",
    "prefer-arrow-callback": "off"
  }
}

3. 安装eslint-plugin-import插件

这个插件意在提供对ES6+ import/export语法的支持,有助于防止你写错文件路径或者引用的变量名

1. 安装

pnpm add -D eslint-plugin-import

2. 修改 eslintrc 文件

{
    "extends": [
        "plugin:import/recommended"
    ]
}

// 相当于
{
    "plugins": ["import"],
    "rules": {
        "import/no-unresolved": [2, { "commonjs": true, "amd": true }],
        "import/named": 2,
        "import/namespace": 2,
        "import/default": 2,
        "import/export": 2,
    }
}

4. 安装eslint-plugin-promise插件

这个插件意在通过代码风格检测让开发者养成较好地使用promise的方式(最佳实践,best practices)。比如在对promise使用了then之后会要求你加一个catch捕获下异常,当然如果你的方法是直接return返回了这个promise的话则不会要求你马上加catch(因为毕竟当然你可以稍后在其他地方拿到这个promise后再catch)

1. 安装

pnpm add -D eslint-plugin-promise

2. 修改 eslintrc 文件

{
    "extends": [
        "plugin:promise/recommended"
    ]
}

// 相当于
{
    "plugins": ["promise"],
    "rules": {
        "promise/always-return": "error",
        "promise/no-return-wrap": "error",
        "promise/param-names": "error",
        "promise/catch-or-return": "error",
        "promise/no-native": "off",
        "promise/no-nesting": "warn",
        "promise/no-promise-in-callback": "warn",
        "promise/no-callback-in-promise": "warn",
        "promise/avoid-new": "warn",
        "promise/no-return-in-finally": "warn"
    }
}

配置Pinia

pinia-plugin-persistedstate