前端工程化 - 为 WePY 项目配置 commitlint、prettier

477 阅读1分钟

前言

最近刚刚接手了“微信支付有优惠”小程序,项目使用的是 WePY 框架,由于大部分代码都是外包同学书写的,所以在前端工程化这块比较欠缺。由于缺少 prettier 等相关格式化工具,代码风格参差不齐。话不多说,下面开始进入今天的主题。

主要思路

使用 husky 提供的 pre-commitcommit-msg 钩子,可以在 git 提交代码时执行 lint-stagedprettier 的相关操作,完成校验 git commit message 以及代码的自动化格式化。

工具安装

husky 安装

npm i -D husky@4.3.6

commitlint 安装

npm i -D @commitlint/cli,@commitlint/config-conventional

lint-staged 安装

npm i -D lint-staged

prettier 安装

npm i -D prettier

主要配置

package.json 需增加配置

// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged",
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
  "lint-staged": {
    "src/**/*.{js,wpy,wxs}": [
      "prettier --write"
    ]
  },
}

commitlint 配置

// commitlint.config.js
module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [
      2,
      'always',
      [
        'upd', // 更新功能
        'bug', // 此项特别针对bug号,用于向测试反馈bug列表的bug修改情况
        'feat', // 新功能(feature)
        'fix', // 修补bug
        'docs', // 文档(documentation)
        'style', // 格式(不影响代码运行的变动)
        'refactor', // 重构(即不是新增功能,也不是修改bug的代码变动)
        'test', // 增加测试
        'chore', // 构建过程或辅助工具的变动
        'revert', // feat(pencil): add ‘graphiteWidth’ option (撤销之前的commit)
        'merge', // 合并分支, 例如: merge(前端页面): feature-xxxx修改线程地址
        'debug', // 需要到测试环境进行调试的情况使用
      ],
    ],
  },
};

prettier 配置

这里需要注意的是,由于 prettier 无法识别 wpywxs 格式,需要手动指定 parser 。

// .prettierrc
{
  "singleQuote": true,
  "semi": true,
  "tabWidth": 2,
  "useTabs": false,
  "printWidth": 120,
  "trailingComma": "all",
  "arrowParens": "always",
  "overrides": [
    {
      "files": "*.wpy",
      "options": { "parser": "vue" }
    },
    {
      "files": "*.wxs",
      "options": { "parser": "babel" }
    }
  ]
}