创建完整的Vite + Vue3 + TypeScript + ESLint + prettierrc + Sass项目模版

news/2024/7/9 23:55:37 标签: vue

相关网站

1. Vite中文官网:Vite中文官网

2. Vue3中文官网:vuejs.org/">Vue3中文官网

3. Element Plus官网:Element Plus官网

一、创建项目

安装Vite

# npm
npm init @vitejs/app

# yarn
yarn create @vitejs/app

新建Vue3项目

# npm 6.x
npm init @vitejs/app my-vue-app --template vue

# npm 7+, 需要额外的双横线:
npm init @vitejs/app my-vue-app -- --template vue

# yarn
yarn create @vitejs/app my-vue-app --template vue
// 支持的模板预设包括:
vanilla
vue
vue-ts // 推荐vue-ts模版
react
react-ts
preact
preact-ts
lit-element
lit-element-ts

二、修改依赖文件

打开项目,替换package.json文件

{
  "name": "vite-vue3-templete",
  "version": "0.0.0",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "serve": "vite preview"
  },
  "dependencies": {
    "sass": "^1.32.8",
    "vue": "^3.0.5",
    "vue-router": "^4.0.3",
    "vuex": "^4.0.0"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^1.1.5",
    "@typescript-eslint/eslint-plugin": "^4.15.1",
    "@typescript-eslint/parser": "^4.15.1",
    "@vue/compiler-sfc": "^3.0.4",
    "eslint": "^7.20.0",
    "eslint-config-prettier": "^7.2.0",
    "eslint-plugin-prettier": "^3.3.1",
    "eslint-plugin-vue": "^7.6.0",
    "prettier": "^2.2.1",
    "typescript": "^4.1.3",
    "vite": "^2.0.5"
  }
}

三、配置ESLint

新建.eslintrc.js,添加以下代码

module.exports = {
  parser: 'vue-eslint-parser',
  parserOptions: {
    parser: '@typescript-eslint/parser',
    ecmaVersion: 2020,
    sourceType: 'module',
    ecmaFeatures: {
      jsx: true
    }
  },
  env: {
    node: true,
    es6: true,
    browser: true
  },
  globals: {
    Markdown: true
  },
  extends: [
    'plugin:vue/vue3-recommended',
    'plugin:@typescript-eslint/recommended',
    'prettier/@typescript-eslint',
    'plugin:prettier/recommended',
    'eslint:recommended'
  ],
  rules: {
    '@typescript-eslint/ban-ts-ignore': 'off',
    '@typescript-eslint/explicit-function-return-type': 'off',
    '@typescript-eslint/no-explicit-any': 'off',
    '@typescript-eslint/no-var-requires': 'off',
    '@typescript-eslint/no-empty-function': 'off',
    '@typescript-eslint/no-use-before-define': 'off',
    '@typescript-eslint/ban-ts-comment': 'off',
    '@typescript-eslint/ban-types': 'off',
    '@typescript-eslint/no-non-null-assertion': 'off',
    '@typescript-eslint/explicit-module-boundary-types': 'off',
    '@typescript-eslint/no-unused-vars': [
      'error',
      {
        argsIgnorePattern: '^h$',
        varsIgnorePattern: '^h$'
      }
    ],
    'no-unused-vars': [
      'error',
      {
        argsIgnorePattern: '^h$',
        varsIgnorePattern: '^h$'
      }
    ],
    'space-before-function-paren': 'off',
    'quotes': ['error', 'single'],
    'comma-dangle': ['error', 'never'],
    'vue/require-default-prop': 'off',
    'vue/custom-event-name-casing': 'off',
    'no-use-before-define': 'off',
    'vue/comment-directive': 'off',
    'vue/singleline-html-element-content-newline': 'off',
    'vue/html-self-closing': 'off',
    'vue/max-attributes-per-line': 'off'
  }
}

三、配置prettierrc

新建.prettierrc,添加以下代码

{
  "eslintIntegration": true,
  "printWidth": 100,
  "tabWidth": 2,
  "useTabs": false,
  "semi": false,
  "vueIndentScriptAndStyle": true,
  "singleQuote": true,
  "quoteProps": "as-needed",
  "bracketSpacing": true,
  "trailingComma": "none",
  "jsxBracketSameLine": false,
  "jsxSingleQuote": false,
  "arrowParens": "always",
  "insertPragma": false,
  "requirePragma": false,
  "proseWrap": "never",
  "htmlWhitespaceSensitivity": "strict",
  "endOfLine": "lf"
}

四、配置全局Scss

1、在/src/assets/下新建commom.scss文件
2、修改vite.config.ts代码

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  // 公共样式
  css: {
    // 🔥此处添加全局scss🔥
    preprocessorOptions: {
      scss: {
        additionalData: '@import "./src/assets/common.scss";'
      }
    }
  },
  // 服务
  server: {
    open: false,
    port: 8080,
    // 代理配置
    proxy: {
      '/api': 'http://192.168.20.88:8888',
    }
  },
  build: {
    // 打包后目录,默认dist
    outDir: 'dist',
  },
  // 引入第三方的配置
  optimizeDeps: {
    include: []
  },
  // 生产环境路径,类似webpack的assetsPath
  base: './',
})

五、安装依赖、启动项目

 // 安装依赖
 cnpm i

 // 启动项目
 npm run dev

六、总结和注意事项

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210309230056845.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzMTg3Ng==,size_16,color_FFFFFF,t_70

一个由Vite构建的Vue3项目就搭建好了,支持TypeScript语法,CSS预处理器为Sass,使用ESLint和prettierrc风格格式化代码
Tips:安装新依赖请添加【–save】:

  npm i xxx --save
  // 或
  cnpm i xxx --save
  // 或
  yarn add xxx --save
  // --save不写的话,新的依赖文件不会写进package.json文件中

七、最后附上我自己的VScode settings.json配置

{
  "editor.fontSize": 16, // 控制字体大小(像素)。
  "files.autoSave": "onWindowChange", // 当窗口失去焦点时,将自动保存未保存的编辑器。
  "editor.formatOnSave": false, // 在保存时格式化文件。格式化程序必须可用,延迟后文件不能保存,并且编辑器不能关闭。
  "editor.formatOnType": true, // 控制编辑器在键入一行后是否自动格式化该行。
  "git.ignoreMissingGitWarning": true, // 忽略“缺失 Git”的警告。
  "workbench.activityBar.visible": true, // 控制工作台中活动栏的可见性。
  "workbench.statusBar.visible": true, // 控制工作台底部状态栏的可见性。
  "workbench.startupEditor": "newUntitledFile", // 打开新的无标题文件 (仅在打开空工作区时适用)。
  "terminal.integrated.fontSize": 16, // 控制终端的字号(以像素为单位)。
  "open-in-browser.default": "chrome", // 打开默认浏览器
  "explorer.confirmDelete": false, // 控制资源管理器是否在把文件删除到废纸篓时进行确认。
  "explorer.confirmDragAndDrop": false, // 控制在资源管理器内拖放移动文件或文件夹时是否进行确认。
  "eslint.options": {
    "extensions": [
      ".js",
      ".vue"
    ]
  },
  "eslint.validate": [ "javascript", "javascriptreact", "vue-html",
    {
      "language": "vue",
      "autoFix": true
    },
    {
      "language": "html",
      "autoFix": true
    }
  ],
  "eslint.autoFixOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "terminal.integrated.rendererType": "dom", // dom: 使用基于回退 DOM 的呈现器。
  "git.path": "F:\\Git\\bin\\git.exe", // Git 可执行文件的路径和文件名
  "workbench.sideBar.location": "left", // 控制侧边栏和活动栏的位置。它们可以显示在工作台的左侧或右侧。
  "editor.fontFamily": "JetBrains Mono,Consolas, 'Courier New', monospace", // 字体
  "editor.tabSize": 2, // 一个制表符等于的空格数。
  "editor.detectIndentation": false, // 控制是否在打开文件时,基于文件内容自动检测
  "git.confirmSync": false, // 同步 Git 存储库前请先进行确认。
  "files.associations": {
    "*.cjson": "jsonc",
    "*.wxss": "css",
    "*.wxs": "javascript",
    "*.nvue": "vue"
  },
  "workbench.colorTheme": "One Monokai", // 主题
  "workbench.iconTheme": "material-icon-theme", // 主题
  "material-icon-theme.showWelcomeMessage": false, // 首次安装后显示欢迎信息。
  "search.followSymlinks": false, // 控制是否在搜索中跟踪符号链接。
  "emmet.includeLanguages": { // 在默认不受支持的语言中启用 Emmet 缩写。
    "wxml": "html"
  },
  "minapp-vscode.disableAutoConfig": true, // 默认在启动时会自动相关文件关联的配置项,配置成功后会将此配置自动设置成 true,避免下次启动再重新配置
  "[json]": {
    "editor.quickSuggestions": { // 控制是否在键入时自动显示建议。
      "strings": true
    },
    "editor.suggest.insertMode": "replace", // 控制接受补全时是否覆盖单词。请注意,这取决于扩展选择使用此功能。
    "editor.defaultFormatter": "HookyQR.beautify" // 定义一个默认格式化程序, 该格式化程序优先于所有其他格式化程序设置。必须是提供格式化程序的扩展的标识符。
  },
  "[html]": {
    "editor.defaultFormatter": "vscode.html-language-features" // 定义一个默认格式化程序, 该格式化程序优先于所有其他格式化程序设置。必须是提供格式化程序的扩展的标识符。
  },
  "[javascript]": {
    "editor.defaultFormatter": "vscode.typescript-language-features" // 定义一个默认格式化程序, 该格式化程序优先于所有其他格式化程序设置。必须是提供格式化程序的扩展的标识符。
  },
  // 对EasyLess的配置,此段配置去掉则默认生成一个css文件
  "less.compile": {
    "compress": false, //是否压缩
    "sourceMap": false, //是否生成map文件
    "out": true, // 是否输出文件,false为不输出
    // "outExt": ".wxss", // 输出文件的后缀,小程序可以写'wxss'
    "outExt": ".css", // 输出文件的后缀,小程序可以写'wxss'
  },
  "editor.fontLigatures": "null", // 启用/禁用字体连字("calt" 和 "liga" 字体特性)。将此更改为字符串,可对 "font-feature-settings" CSS 属性进行精细控制。
  "javascript.updateImportsOnFileMove.enabled": "always",
  "workbench.editor.enablePreview": false,
  "[wxml]": {
    "editor.defaultFormatter": "qiu8310.minapp-vscode"
  },
  "[css]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[vue]": {
    "editor.defaultFormatter": "octref.vetur"
  },
  "editor.suggestSelection": "first",
  "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
  "prettier.semi": false,
  "window.zoomLevel": -1,
  "[python]": {
    "editor.defaultFormatter": "ms-python.python"
  },
  "git.ignoreRebaseWarning": true,
  "diffEditor.ignoreTrimWhitespace": false,
  "editor.renderIndentGuides": false,
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "typescript.updateImportsOnFileMove.enabled": "always"
}

http://www.niftyadmin.cn/n/1410418.html

相关文章

手写简版Vue

学习了Vue之后&#xff0c;根据自己的理解&#xff0c;手写了简版Vue&#xff0c;希望对正在学习Vue源码的初学者有所帮助&#xff0c;一起加油&#xff01; 语雀访问地址&#xff1a;手写Vue HTML <!-- 声明meta&#xff0c;不然会乱码 --> <meta http-equiv"…

mysql-cluster 安装配置

mysql-cluster免编译包下载&#xff1a;https://dev.mysql.com/downloads/file/?id469881 新版本支持只把索引和用到的数据加载到内存&#xff0c;而不是老版本的整个数据库都得加到内存中 wget https://cdn.mysql.com//Downloads/MySQL-Cluster-7.5/mysql-cluster-gpl-7.5.6-…

封装uniapp全局弹窗并绑定到原型上

调用方式 // main.js中引入 import ./popup// Toast // 1、带成功图标提示框 this.$Toast(success, 提交成功&#xff01;, () > {// 提示框关闭后 }) // 2、不带任何图标提示框 this.$Toast(none, 请输入手机号, () > {// 提示框关闭后 }) // 3、带loading图标提示框 t…

oauth2-server-php-docs 概念

PHP的OAuth2服务器库 将OAuth2.0干净地安装到您的PHP应用程序中。 从GitHub 下载代码开始。 要求 这个库需要PHP 5.3.9。然而&#xff0c;有一个稳定的版本和开发分支的PHP 5.2.x-5.3.8为好。 安装 这个库遵循zend PSR-0标准。有一些自动加载器可以自动加载这个库&#xff0c;但…

uni-app/小程序自定义导航栏+下拉刷新完美解决方案(封装原生page滑动组件)

本组件优势&#xff1a; 1、使用小程序/uniapp原生page滑动&#xff0c;流畅度高于scroll-view组件 2、采用组件方式直接使用&#xff0c;只需在下拉刷新、上拉加载、加载完成时触发组件方法即可 3、包含无数据时空布局展示 4、可自定义下拉刷新、上拉加载样式 5、采用组件的双…

VMware vSphere 5.1 群集深入解析(二十五)- 关联性

第三部分 vSphere存储DRS 第七章 关联性 默认&#xff0c;存储DRS适用于虚拟机内部&#xff08;一个数据存储上的虚拟机的全部文件)关联规则&#xff08;VMDK关联&#xff09;. 配置完成数据存储群集后&#xff0c;在高级选项中允许你改变默认的虚拟机关联规则。 图147&#xf…

Vue Element UI 自定义描述列表组件

效果图 写在前面 写后台管理经常从列表点击查看详情&#xff0c;展示数据信息&#xff0c;Element UI虽然有表格组件&#xff0c;但是描述组件并没有&#xff0c;之前团队的成员遇到这种情况都自己去写样式&#xff0c;写起来也麻烦&#xff0c;而且每个人写出来的样式也不统一…

前端02.html基础

一、什么是html&#xff1f; 超文本标记语言&#xff08;Hypertext Markup Language&#xff0c;HTML&#xff09;通过标签语言来标记要显示的网页中的各个部分。一套规则&#xff0c;浏览器认识的规则。 浏览器按顺序渲染网页文件&#xff0c;然后根据标记符解释和显示内容。但…