首頁 > 軟體

vue專案程式碼格式規範設定參考指南

2022-05-25 18:00:53

前言

為了儘量統一專案成員的程式碼風格,降低開發者對程式碼的理解成本,所以我們需要為專案統一程式碼格式規範;同時我們不能為了降低理解成本,去增加開發成本,所以我們藉助VS Code的相關外掛去完成程式碼格式化的功能。

為專案新增eslint

使用vue-cli構建的專案,在專案構建時,就會讓你選擇格式化方案,如果是已有專案執行vue add eslint新增格式化方式,建議選擇Prettier 的格式化方案;如果是uniapp的專案,如果使用的是vue-cli,也是使用vue add eslint,如果是使用HBuilder構建打包,需要安裝另外安裝@vue/cli-service,不然npm run lint無法正常格式化。

新增eslint之後,根據你的選擇,eslint的設定項,可能在.eslintrc.js檔案中,如果該檔案不存在,設定項應該在package.json,預設設定應該如下:

module.exports = {
  root: true,
  env: {
    node: true,
  },
  extends: [
    "plugin:vue/essential",
    "eslint:recommended",
    "plugin:prettier/recommended",
  ],
  parserOptions: {
    parser: "@babel/eslint-parser",
  }
};

這些設定不建議改動,如果有其他需求,我們可以在其基礎上進行自定義設定。

自定義eslint設定

module.exports = {
  "root": true,
  "env": {
    "node": true
  },
  "extends": [
    "plugin:vue/essential",
    "plugin:vue/recommended",
    "eslint:recommended",
    "@vue/prettier"
  ],
  "parserOptions": {
    "parser": "babel-eslint"
  },
  rules: {
    "no-console": process.env.NODE_ENV === "production" ? "error" : "warn",
    "no-debugger": process.env.NODE_ENV === "production" ? "error" : "warn",
    "no-unused-vars": [
      "error",
      { vars: "all", args: "none", ignoreRestSiblings: true },
    ],
    "vue/order-in-components": ["error", {
      "order": [
        "el",
        "name",
        "key",
        "parent",
        "functional",
        ["delimiters", "comments"],
        ["components", "directives", "filters"],
        "extends",
        "mixins",
        ["provide", "inject"],
        "ROUTER_GUARDS",
        "layout",
        "middleware",
        "validate",
        "scrollToTop",
        "transition",
        "loading",
        "inheritAttrs",
        "model",
        ["props", "propsData"],
        "emits",
        "setup",
        "asyncData",
        "data",
        "fetch",
        "head",
        "computed",
        "watch",
        "watchQuery",
        "LIFECYCLE_HOOKS",
        "onLoad",
        "onShow",
        "onReady",
        "onHide",
        "onUnload",
        "onResize",
        "onPullDownRefresh",
        "onReachBottom",
        "onTabItemTap",
        "onShareAppMessage",
        "onPageScroll",
        "methods",
        ["template", "render"],
        "renderError"
      ]
    }]
  },
  globals: {
    uni: true,
    requirePlugin: true
  },
}

推薦的eslint設定如上。

extends中新增了plugin:vue/recommended,這個外掛是限制了vue的一些程式碼規範,如元件屬性的順序,vue選項的順序等。

rules中的no-console和no-debugger限制了程式碼中的console和debugger,在開發環境會生成警告資訊,在生產環境會提示報錯;no-unused-vars對為使用的變數做了限制,除了引數和reset中不允許出現未使用的變數;vue/order-in-components是在uniapp中對plugin:vue/recommended規範的一個補充,uniapp中存在許多vue沒有的選項,設定vue/order-in-components將這些沒有的選項也進行格式化排序。

globals中新增使用到的全域性變數,如果不新增會在格式化時報錯。uni是uniapp常用的全域性物件,requirePlugin是微信開發用的的全域性變數。

pre-commit設定

pre-commit在git commit之前做一些處理,我們需要在提交之前對程式碼格式規範做檢查,避免在專案打包時,出現eslint的報錯。在專案新增lint-staged,然後再package.json中設定(我們使用vue命令新增eslint時,選擇commit時格式化,會自動幫我們新增):

"gitHooks": {
  "pre-commit": "lint-staged"
},
"lint-staged": {
  "*.{js,jsx,vue}": [
    "vue-cli-service lint --mode production",
    "git add"
  ]
}

VS Code設定

我們需要用的eslintvetur這兩個外掛,eslint外掛需要npm全域性安裝eslint包,兩個外掛安裝完之後,在VS Code的設定中,設定:

"[vue]": {
    "editor.defaultFormatter": "octref.vetur"
}

如果無法格式化,可能是格式化工具衝突導致的,設定:

// 儲存時使用VSCode 自身格式化程式格式化
"editor.formatOnSave": true,
// 儲存時用eslint格式化
"editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
}
// 兩者會在格式化js時衝突,所以需要關閉預設js格式化程式 
"javascript.format.enable": false

參考

vue風格指南

eslint-plugin-vue

eslint檔案

總結

到此這篇關於vue專案程式碼格式規範設定的文章就介紹到這了,更多相關vue3封裝input元件內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com