changelog 日志自动生成插件

功能

该工具针对一些须要手动输入更新日志的项目,实现自动化输出更新日志,而且对更新日志进行内容格式化,便于后期维护,目前主要有如下几个功能模块。node

  1. cz -- 定制化 git 提交
  2. log -- 自动生成 CHANGELOG.MD 日志文件
  3. lint -- 校验 commit 信息

安装依赖包webpack

npm install jimi-web-changelog --save
// or
yarn add jimi-web-changelog --save-dev
复制代码

1、cz 模块

1. 安装 commitizen 依赖包

cnpm i commitizen --save-devgit

2. 在 package.json 中加入如下内容

{
  ...
  "config": {
    "commitizen": {
      "path": "./node_modules/jimi-web-changelog/lib/cz"
    }
  },
}
复制代码

3. 在 package.json 中建立如下 script 命令

{
  "cz": "git add . && git cz"
}
复制代码

按照提示正确输出 commit 信息内容,以下示例:web

2、log 模块

1. 安装 conventional-changelog-cli 依赖包

cnpm i conventional-changelog-cli --save-dev
复制代码

2. 建立如下命令

{
  ...
  "script": {
    "log": "conventional-changelog --config node_modules/jimi-web-changelog/lib/log -i CHANGELOG.md -s -r 0",
  }
}
> 结尾数字若为 1 ,生成当前版本的变化状况,若为 0, 生成全部的日志文件。
复制代码

3. 示例

3、lint 模块

1. 安装 husky commitlint 依赖

cnpm i husky commitlint --save-dev
复制代码

2. 在 package.json 中引入如下配置。

{
  ...
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
}
复制代码

3. 在项目根路径下建立 .commitlint.js 或者 commitlint.config.js

具体配置能够参考 commitlint 官方,例子:npm

module.exports = Object.assign({}, require('jimi-web-changelog/lib/lint'), {
  rules: {
    'subject-empty': [2, 'never'],
    'type-empty': [2, 'never'],
    'type-enum': [2, 'always',
      [
        '新功能',
        '修复',
        ...
      ]
    ]
  }
}
复制代码

建议

能够搭配 huskylint-stage 效果更佳。它能在你每次提交代码前校验你的代码格式并修复错误的代码格式,具体配置能够参考当前根目录下的 package.json 和 .eslintrc.json

Q&A

1. No files added to staging! Did you forget to run git add?

应该没有文件内容变更还执行 git add . 提交致使的。试着对项目进行更改再保存试试。xcode

2. 提交后,输入更新日志命令,CHANGELOG.MD 内容没有更新?

只有每次版本迭代的的时候才会更新这一次的日志信息。能够尝试打个标签最为封版。bash

3. mac 没法运行 git 命令,报错?

能够试试安装 xcode.markdown

xcode-select --install工具

4. 打印日志没有版本号?

版本号目前支持的格式为 vX.X.X,?格式对吗?

5. js如何读取 md 文件?

若是该项目使用了 webpack,可使用 markdown-loader.

第一次写工具库,不免有瑕疵,欢迎你们 pr,可是还请口下留情?
喜欢的话给个 star吧
复制代码

转载于:https://juejin.im/post/5c4bd199f265da613c0a2635