От нормализации фиксации к публикации пользовательских шаблонов CHANGELOG

Git

предисловие

Недавно я изучаю Git, чтобы отправлять спецификации, публиковать и генерировать CHANGELOG и, наконец, реализовывать свой собственный шаблон CHANGELOG и публиковать его в NPM.Пожалуйста, нажмите на адрес плагина.здесь

Git Commit раньше был не очень стандартен, что сабмитить в виду, все в команде сабмитят по-разному, нет специального обозначения, какие коммиты новые фичи, а какие багфиксы, сложно проверить записи коммитов.

Концептуальная версия незнакомца, перед использованием версии git tag play вам необходимоСначала проверьтеЧто такое версия на удаленном сервере один раз? После добавления локального тега отправьте тег на удаленный склад. Это только шаг для завершения версии. Если вам нужно предоставить файл CHANGELOG.md, чтобы объяснить содержание обновления каждого версия, это более хлопотно

В настоящее время нам нужны подключаемые модули, которые помогут нам стандартизировать отправку коммитов git, автоматизировать выпуск версий и автоматически генерировать CHANGELOG.

Эта статья длинная и содержит много картинок, так что будьте осторожны заранее!

плагин хаски хук

использоватьhuskyсправлятьсяgit commitПредыдущая операция, зачем мы это делаем, ведь мы можемgit commitПроверьте код еще раз, прежде чем предотвратить отправку «грязного» кода и убедитесь, что код в базе кода «чистый»,huskyне только управлятьcommit,gitКрюками почти можно управлять, но наиболее часто используемые из нихcommitа такжеpush

  • Установить
npm install husky --save-dev
  • Настроить в пакете
"husky": {
  "hooks": {
    "pre-commit": "npm run lint"
  }
}

здесь, вcommitРаньше мы выполнялиnpm run lint,Этоvue-cli3Команды, данные нам, будут основаны на нашейeslintправила для проверки кода иавто ремонт, не забудьте сначалаgit addдокумент

  • использовать

Но в этом будет проблема, то есть в этой подаче я могу модифицировать только один файл, например, я буду модифицироватьa.js, но он все равно будет проверять все файлы .js в src, что очень недружелюбно.

В результате возникает проблема: каждый раз, когда вы отправляете код, независимо от того, сколько изменений было внесено, будут проверяться файлы всего проекта.скоростьстанет все больше и большемедленный

lint-staged

Чтобы решить вышеуказанные болевые точки, вам необходимо использоватьlint-staged. ЭтоТолькоПодтвердите, что вы отправили или измениличастьсодержание.

npm install lint-staged -D -S

Измените конфигурацию package.json:

{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "src/*_/_.{js,vue}": ["npm run lint", "git add"]
  }
}

Как настроено выше, каждый раз это будет только в вашем локальномcommitПеред этим убедитесь, что контент, который вы отправляете, соответствует вашемулокальная конфигурацияизeslintЕсли правила соблюдены, отправка будет успешной. Если не совпадает, то будетавтоматическийвоплощать в жизньnpm run lintПопробуй помочь тебеавто ремонт, если восстановление прошло успешно, это поможет вам отправить исправленный код.Если это не удастся, вам будет предложено сообщение об ошибке, и вам будет разрешено отправить код после исправления ошибки.

Но это не обязательно, некоторые члены команды или новички не настроили в редакторе илиигнорироватьПринудительно отправляется сообщение об ошибке в командной строке.В это время необходимо настроитьpre-commitЭта обязательная проверка гарантирует, что весь контент, отправленный в удаленный репозиторий, соответствует спецификациям команды.

Ссылаться нацветочные брюкиДокументация большого парняvue-element-admin

Проверка фиксации фиксации

В совместном проекте с несколькими людьми, если стиль кода един, а описание информации о представлении кода является точным, техническое обслуживание иBugБудет удобнее обращаться.

Git каждый раз, когда вы отправляете код, вы должны писатьCommit message(Совершить)

Однако метод отправки у всех разный. Нет специального обозначения того, какие коммиты являются новыми функциями, а какие исправлениями ошибок. В настоящее время для стандартизации необходимы подключаемые модули.

Стандартизируйте роль сообщения фиксации

  • предоставить больше исторической информации,УдобствоБыстрый просмотр
  • Отфильтруйте определенные коммиты (например, изменения документа), чтобы быстро найти информацию
  • Сгенерировано непосредственно от совершенияCHANGELOG
  • хорошая читаемостьпонятно, вам не нужно смотреть на код, чтобы понять роль текущего коммита.
  • Подготовка к проверке кода
  • Легко отслеживать историю проекта

Установите плагин в проект:

npm i commitizen cz-conventional-changelog --save-dev
  • Настроить в пакете
"config": {
  "commitizen": {
    "path": "cz-conventional-changelog"
  }
}
  • В упаковкеscriptsкоманда конфигурации в
"commit": "git-cz",
  • использовать

После того, как зависимости будут установлены, вы можете начатьпоказать операциюохватывать

первымgit add .После добавления файла в локальную промежуточную область,commit

npm run commit

Обратите внимание, что если ранееgit commitЧтобы отправить код таким образом, его нужно изменить наgit-cz

Обратите внимание, что если ранееgit commitЧтобы отправить код таким образом, его нужно изменить наgit-cz

Обратите внимание, что если ранееgit commitЧтобы отправить код таким образом, его нужно изменить наgit-cz

Описание формата сообщения фиксации

Сообщение о коммите обычно состоит из трех частей:Header,Bodyа такжеFooter

Header type(scope):subjectтип (обязательно), область действия (необязательно) и тема (обязательно)

Есть несколько типов на выбор

тип: используется для описания типа фиксации в виде следующего

feat:新功能
fix:修补 bug
docs:修改文档,比如 README, CHANGELOG, CONTRIBUTE 等等
style: 不改变代码逻辑 (仅仅修改了空格、格式缩进、逗号等等)
refactor:重构(既不修复错误也不添加功能)
perf: 优化相关,比如提升性能、体验
test:增加测试,包括单元测试、集成测试等
build: 构建系统或外部依赖项的更改
ci:自动化流程配置或脚本修改
chore: 非 src 和 test 的修改
revert: 恢复先前的提交

scope: (необязательный) используется для описания области действия коммита.

тема: краткое описание коммита, как можно короче

Body

Часть Body представляет собой подробное описание этого коммита, которое можно разделить на несколько строк.

Footer

Раздел нижнего колонтитула используется только в двух случаях.

  • Несовместимые изменения

Если текущий код несовместим с предыдущей версией, раздел нижнего колонтитула начинается сBREAKING CHANGEВ начале следует описание изменения, а также причина изменения и способ миграции.

  • закрыть вопрос

Если текущая фиксация предназначена для проблемы, вы можете закрыть проблему в разделе нижнего колонтитула или закрыть сразу несколько задач.

? Select the **type** of change that you're committing:
(type) 选择提交更改的类型
? What is the **scope** of this change (e.g. component or file name)? (press enter to skip)
(scope) 此次更改的范围是什么(组件或者文件名)
? Write a **short**, imperative tense description of the change:
(subject) 写一个简短的,命令式的变化描述
? Provide a **longer description** of the change: (press enter to skip)
(Body) 提供更改的长描述
? Are there any **breaking changes**?
(Footer) 有没有突破性的变化
? Does this change affect any open **issues**? (y/N)
(Footer) 此次更改是否有要关闭 issues

Если текущая фиксация связана с проблемой

? Does this change affect any open issues? (y/N)

Выберите Y, введитеCloses #1(указывает на закрытие 1-го выпуска)

Также возможно закрыть сразу несколько задач: Закрывает #1 #2 #3

Адрес ссылки по умолчанию для задач в CHANGELOG основан на адресе в package.json.repositoryгенерировать

еслиrepositoryНет, он получит git в gitпуть к удаленному репозиториюпрефикс

будет проведено позжепроверка форматирования кода, если код не соответствует спецификации, отправка также не пройдет,Обязательно убедитесь, что текущий формат проекта правильный, и отправьте его после спецификации! ! !

Для получения более подробной информации, пожалуйста, обратитесь к блогу Учителя Жуань Ифэн:Сообщение фиксации и руководство по написанию журнала изменений

Версия с автоматическим выпуском

Здесь я используюrelease-itВ качестве плагина релизной версии вы также можете выбратьstandard-version

  • Установить плагин
npm install --save-dev release-it
  • в упаковкеscriptsкоманда конфигурации в
"release": "release-it"

Введите терминал проектаnpm run releaseбудет выполнять действие

Если появляется сообщение об ошибке, показанное на рисунке ниже, вы можете решить его, войдя в npm.

До релизной версии,долженхочуподтверждатьЕсть ли еще файлыне представлен, в противном случае будет сообщено об ошибке, и сообщение об ошибке будет следующим:

ERROR Working dir must be clean.
Please stage and commit your changes.
Alternatively, use `--no-git.requireCleanWorkingDir` to include the changes in the release commit (or save `"git.requireCleanWorkingDir": false` in the configuration).

Рабочий каталог должен быть чистым, пожалуйста, поставьте (add) и отправить (commit) ваши изменения

Не рекомендуетсяРешено путем изменения конфигурации git, потому что публикация версии должна бытьбез измененийиз,стабильныйТолько для публикации, если в теге git не указан соответствующий идентификатор фиксации,По умолчаниюсуществуетдо настоящего временивкладка ЗАПИСАТЬ,Уведомление! !быть вглавная ветвь(основная) версия выпуска

release-itбуду читатьместныйизpackage.jsonсерединаversion, подсказывая вамтокКакая версия, не нужно разработчикам использоватьgit tag -lЧтобы узнать, что такое текущая локальная версия и какие изменения были внесены в эту версию, он предоставляет несколько параметров по умолчанию, чтобы вы могли выбрать номер версии.

Если вы считаете, что вышеуказанные варианты не могут удовлетворить ваши требования, последний вариант - заполнить информацию о версии самостоятельно (для соответствия спецификации), вы можете обратиться к спецификации версии.Семантическое управление версиями 2.0.0

После подтверждения версии она будет автоматически измененаpackage.jsonинформация о версии, которая является одним из способов просмотра текущей версии проекта для внешних разработчиков. После этого спрашивается то ли коммитить, то ли тегировать, то ли пушить на удалённый склад, и можно жать Enter до упора. Если последним элементом является проект компании, вам не нужно загружать его в репозиторий npm, просто выберите НЕТ, даже если выбрано Да, пока вы находитесь вpackage.jsonСредняя конфигурацияprivateдляtrue, не загружается. Как проверить успешность релиза?Вы можете ввестиgit tag -lПросмотр локальных тегов, вы также можетеgit ls-remote --tags originПросмотр удаленных тегов

Но это просто тег, никакой подробной информации,Список измененийВсе еще должен быть написан вручную разработчиком

В настоящее время вам необходимо использовать автоматически сгенерированный плагин CHANGELOG.

Автоматически генерировать CHANGELOG

Установить

npm i conventional-changelog-cli --save-dev

настроить package.json

"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0"

Приведенная выше команда журнала изменений не перезапишет предыдущую.CHANGELOG, только вCHANGELOG.mdизголоваПлюс изменения с момента последнего релиза.

npm run changelog

Создайте файл CHANGELOG.md

существуетCHANGELOG.mdголовы плюс с последнейрелизная версияменяется с тех пор. Отображать типы подвигов, ошибок, документов и т. д.

Сгенерированный CHANGELOG не будет отсортирован в хронологическом порядке загрузки коммитов.Кто-то отправил вопросы официальному, ожидая официального решения. . 👉портал

Вы можете открыть репозиторий GitHub/GitLub и заполнить версию тега, соответствующую содержимому, сгенерированному журналом обновлений.

Подробный исходный код обычного журнала изменений

Здесь сначала покажите окончательный сгенерированный рендеринг CHANGELOG.

Предыстория происхождения следующая:

Тест: «Коммиттер, соответствующий коммиту, должен быть сгенерирован в CHANGELOG, чтобы проблемное место знало, кто за это отвечает»

Я: "😎 Это просто ~ просто настройте параметры"

Я думал, что мне нужно только настроить параметры, ведь плагин CHANGELOG поддерживает пользовательские параметры, когда я увидел документациюСмущенныйТеперь эти два параметра не предоставляются, а отображается отправитель и почтовый ящик отправителя.Что делать?Открыть вопрос. . . Кто-то должен отметить это требование 😏, по мнению#351Зная, что использование пользовательской конфигурации требует передачи пользовательского файла конфигурации извне

Создайте новый файл конфигурации с параметром -n после команды

{
  "scripts": {
    "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 -n ./changelog-option/index.js"
  }
}

Решена проблема использования пользовательской конфигурации, как увеличить CHANGELOG, чтобы генерировать больше информации об отправке, или открыть проблему...#349

Комбинация наверное такая, попробуйте эффект:

формат имеет поля authorName и authorEmail, запуститеnpm run changelogПосле этого все равно не действует 😖 Могу только прочитать исходный код

Сторонний плагин node_modules отладки VSCode

настроитьlaunch.json,отладкаconventional-changelog-cliпод плагинcli.jsфайл, который согласуется с журналом изменений в пакете, а параметры передаются в"-p", "angular", "-i", "CHANGELOG.md", "-s", "-r", "0", "-n", "./changelog-option/index.js"

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "cwd": "${workspaceFolder}",
      "program": "${workspaceFolder}\\node_modules\\conventional-changelog-cli\\cli.js",
      "args": [
        "-p",
        "angular",
        "-i",
        "CHANGELOG.md",
        "-s",
        "-r",
        "0",
        "-n",
        "./changelog-option/index.js"
      ]
    }
  ]
}

Глобальный поиск входящих полей элемента конфигурации:gitRawCommitsOpts, сделать точку останова для отладки

Обнаружено, что автор передает пользователюgitRawCommitsOptsСделайте слияние и, наконец, перейдите кconventionalChangelogметод для выполнения, продолжайте просматривать метод

Плагин отconventional-changelog-cliперенаправить наconventional-changelogВниз

Определить, есть ли у пользователя входящиеpresetПредустановленные параметры, используемые при отладкеangularКонфигурация (-p angular)

здесь возвращаетсяconventionalChangelogCoreметод, все еще нажмите, чтобы прыгнуть

conventional-changelog-core

В качестве основной библиотеки подключаемого модуля основным местом являетсяmergeConfigСюда

Передать конфигурацию в ядроmergeConfigсливаться

formatТолько по умолчаниюhash,gitTagsа такжеcommitterDate, нет нуждыauthorNameа такжеauthorEmail, fromTag — наш последний отправленный тег,merges: falseПредставлен в CHANGELOGНе будетСоздание информации для ветки слияний

mergeConfigЯвляетсяPromise, после оценки конфигурация передаетсяgitRawCommits, с участиемpipeПеренаправление для передачи данных

БудуgitRawCommitsOptsНастроить входящиеgitRawCommitsВ методе продолжайте нажимать и видеть, и он перейдет кgit-raw-commitsплагин

git-raw-commits

пройти черезgit-raw-commitsофициальный сайт гитхабаREADME, обнаружил, что этот плагин получает запись фиксации из локального репозитория git, которая была передана доformatэто параметр в git-log

hash:哈希值

gitTags:标签

committerDate:提交时间

authorName:提交人

authorEmail:邮箱

Более подробную информацию о git-log можно увидетьgit официальная документация, вы также можете отформатировать его в формате, который мы настроили после git log

Используйте git log напрямую для просмотра записи git commit, также есть поля имени автора и адреса электронной почты.

смотри здесь, конечноgit-raw-commitsПлагин просто читает данные из git и форматирует их, поэтому должен быть плагин, который записывает данные в файл CHANGELOG.md, так что продолжайте читатьconventional-changelog-core,Обнаружитьconventional-changelog-writer, не смотрите сначала на этот плагин, помните, что я использовал его раньшеangularЭто по умолчанию, вы можете пойти посмотретьconventional-changelog-angularплагин

Хороший проект знает, что делает каждый файл из имени файла, и разделяет конфигурацию разных плагинов по отдельности, чему стоит научиться.

conventional-changelog-angular

writer-opts.jsЭто конфигурация, записанная в CHANGELOG, и, наконец, конфигурация будет передана вconventional-changelog-writer, здесь, чтобы соответствовать информации нашего предыдущего сообщения коммита

На самом деле перед писателем стоит другойparserПлагины, используемые для анализа предоставленной нами информации, сколько плагинов зависит от этого журнала изменений. . .

используя фиксациюнормализоватьКогда плагин отправлен, вам необходимо заполнить соответствующую информацию, распечатать информацию о коммите здесь

обнаружил, что естьauthorNameа такжеauthorEmailОба поля существуют, иconventional-changelog-writerЭтот плагин предназначен для создания такого объекта CHANGELOG.md с помощью плагинаREADMEЗнать

Теперь поле тоже доступно, но почему оно не отображается?Продолжаем смотреть исходный код, который здесь используетсяtemplates/commit.hbsдокумент

Видя, что это почти то же самое, папка шаблона является файлом шаблона для создания CHANGELOG, проверьте hbs(Handlebars) — это шаблонизатор. Однако в commit.hbs этого нет.нетЯ нашел эти два поля полезными, подумайте об этом, эти два поля являются моей конфигурациейgitRawCommitsOptsвходящий

иллюстрироватьangularПредустановка изначально не думала о создании authorName и email. . . Это смущает, я могу только добавить его сам, изменить файл commit.hbs и добавить его после хеш-значения сгенерированного коммита.

Это успех~~! ! ! 🎉🎉🎉

Меня это взволновало, но, если подумать 🤔, такая прямая модификацияnode_modulesНет возможности поделиться исходным кодом плагина, если его используют коллеги, модифицировать его таким образом невозможно.conventional-changelog-angularИсходный код и до тех пор, пока зависимости устанавливаются с помощью повторной установки npm, предыдущие модификации исчезнут.

Автор ужеconventional-changelog-cliпредусмотрено в обычаепример

Однако этот адрес былзаброшенныйТеперь новый адрес — это предустановка angular, которую мы использовали ранее.conventional-changelog-angular, официальный также предоставляет другие предустановленные шаблоны, такие как:atom,eslint,jQuery

это вОдинУправляется в пакетенесколькопроект используетсяlerna, инструмент для управления проектами JavaScript с несколькими пакетами. является более популярнымmonorepoРежим управления проектом, React, Vue, Babel используют этот режим для управления.

ранее проанализированныйconventional-changelog-angular, напрямую клонировать исходный код для изменения, созданияgit-raw-commit.js

module.exports = {
  format:
    '%B%n-hash-%n%H%n-gitTags-%n%d%n-committerDate-%n%ci%n-authorName-%n%an%n-authorEmail-%n%ae'
}

Передать и использовать в index.js

'use strict'
const Q = require(`q`)
const conventionalChangelog = require(`./conventional-changelog`)
const parserOpts = require(`./parser-opts`)
const recommendedBumpOpts = require(`./conventional-recommended-bump`)
const writerOpts = require(`./writer-opts`)
// 格式化 git log 信息
const gitRawCommitsOpts = require('./git-raw-commit')

module.exports = Q.all([
  conventionalChangelog,
  parserOpts,
  recommendedBumpOpts,
  writerOpts,
  gitRawCommitsOpts
]).spread(
  (
    conventionalChangelog,
    parserOpts,
    recommendedBumpOpts,
    writerOpts,
    gitRawCommitsOpts
  ) => {
    return {
      conventionalChangelog,
      parserOpts,
      recommendedBumpOpts,
      writerOpts,
      gitRawCommitsOpts // 传入
    }
  }
)

Затем измените commit.hbs, чтобы отображались authorName и authorEmail.

вотмаленькая яма! ! я используюVSCodeПосле модификации сразу сохраняется, если естьнесколько коммитов, не будет заворачиваться, будет сжиматься в одну строку, считается, что сохраняетсяневерный формат, возможно, я установил больше расширений форматирования в VSCode, рекомендуется использоватьNotepad++модифицироватьcommit.hbsдокумент

Заменить путь задач

использование компанииredmineдля управления проектом тестировщики будутredmineСерединаissues, который генерируется здесьCHANGELOGзаменить оптомissuesадрес, будетGitLabЗамените префикс адреса наredmine, сказал он-лайнreplaceбиблиотеку, но я обнаружил, что эта библиотека была загружена в npm три года назад, и онабольше не поддерживается, также после использованиясообщить об ошибке. . . Поэтому я написал простой файл замены строки. После создания CHANGELOG запустите файл, чтобы заменить его. Он поддерживает передачу параметров (см.conventional-changelogисходный код, используемыйminimistплагин для получения переданных параметров)

{
  "scripts": {
    "changeissueurl": "node ./changelog-option/replace.js https://gitlba.com/issues/ https://redmine.example.com/issues"
  }
}

Затем интегрируйте эти два скрипта в одну версию, а затем, чтобы выпустить версию, чтобы сгенерировать CHANGELOG, просто запуститеnpm run versionТолько что

Опубликовать в репозиторий NPM

Это все еще слишкомбеда, пользователю не нужно слишком много знать, а файл существует локально, что неудобномигрировать, 🤔 Можете ли вы сделать предустановленный шаблон прямо как угловой, чтобыconventional-changelogПросто воспользуйтесь нашим кастомным предустановленным шаблоном, для проверки все равно придется полистать исходный код, он уже был отлажен до этого, но я не присматривался.

существуетconventional-changelog-preset-loaderсередина

По умолчанию просто следуйте${scope}conventional-changelog-${name}Это соглашение об именах может потребоваться,scopeЭто связано с тем, что репозитории npm не могут иметь одинаковое имя, вы можете добавить свое собственное имя пользователя в качестве области действия, например:@zsh/conventional-changelog-angular, а затем измените конфигурацию на-p @zsh/angularВы можете использовать пользовательские пресеты

благодарныйconventional-changelog! Нечего сказать, запустите проект npm, вставьте все предыдущие файлы и снова оптимизируйте шаблон.

СДЕЛАТЬ:

  • authorName и authorEmail не обязательны и могут быть настроены
  • Проблемы легче заменить адресами
  • Добавить в заголовокemojis🚀

Поскольку коммит, полученный здесь, находится в строковом формате, вы можете установить значение в шаблоне commit.hbs, а затем заменить его в соответствии с конфигурацией пользователя, поэтому authorName и authorEmail не нужны, они отключены по умолчанию и должны быть вручную установить, чтобы включить

Вопросы и смайлики относительно простые и обсуждаться не будут.Я считаю, что если вы внимательно прочитаете это, то сможете сделать свои пресеты~

Так как публикую в npm первый раз, опыта у меня нет, и надеюсь, что эффект будет не очень, приношу свои извинения 🏃‍♂️, адрес npm:conventional-changelog-custom-config

использовать

npm install conventional-changelog-custom-config --save-dev

Настроить CHANGELOG в виде параметров конфигурации в package.json,Не заполнять конфигурациюпоследуетangularШаблон по умолчанию для создания CHANGELOG, конкретная конфигурация выглядит следующим образом:

{
  "scripts": {
    "changelog": "conventional-changelog -p custom-config -i CHANGELOG.md -s -r 0"
  },
  "changelog": {
    "bugsUrl": "https://redmine.example.com/issues/",
    "emojis": true,
    "authorName": true,
    "authorEmail": true
  }
}

bugsUrl

Type: string Default: false

Используйте этот параметр, если вам нужно заменить URL-адрес задач другим URL-адресом, например, с помощьюredmineуправлять проектами,bugsUrl: 'https://redmine.example.com/issues/'

Если не заполненоbugsUrlбудет основываться наpackage.jsonсерединаrepositoryилиrepository.urlв качестве URL-адреса проблем

{
  "repository": {
    "type": "git",
    "url": "https://github.com/example"
  }
}

еслиrepository.urlЕсли нет, он получит git в gitпуть к удаленному репозиториюкак префикс,адрес источника обычного журнала изменений

Если вы используете стороннюю систему совместной работы (например,bitbucket), рекомендуется использовать этот плагинconventional-changelog-angular-bitbucket

emojis

Type: boolean Default: false, справочник по типам эмодзиgitmoji

Commit Type Title Description Emojis
feat Features A new feature
fix Bug Fixes A bug Fix 🐛
docs Documentation Documentation only changes 📝
style Styles Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) 💄
refactor Code Refactoring A code change that neither fixes a bug nor adds a feature ♻️
perf Performance Improvements A code change that improves performance ⚡️
test Tests Adding missing tests or correcting existing tests
build Build Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) 👷
ci Continuous Integrations Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) 🔧
chore Chores Other changes that don't modify src or test files 🎫
revert Reverts Reverts a previous commit

authorName

Type: boolean Default: false

Сгенерировать имя пользователя в CHANGELOG

authorEmail

Type: boolean Default: false

Создание почтовых ящиков в CHANGELOG

Больше разделов для просмотраREADME,Нелегко кодировать слова, нелегко открыть исходный код, если вы думаете, что это хорошо, дайте ⭐️~😝 Спасибо~

Суммировать

Подводя итог всему этому процессу подбрасывания, спецификация стиля кода ----> спецификация коммита ----> спецификация версии ----> генерировать CHANGELOG ---> пользовательский CHANGELOG ---> предустановка выпуска NPM

Просто загляните в README первых четырех шагов и приступайте к работе. В этом нет ничего сложного. Настройка CHANGELOG немного сложнее, и он открыт для публики.conventional-changelog-cliСобрать пользовательскую конфигурацию, например -p angular -s -r 0 -n config.js, если есть предустановленный шаблон, например angular, он будетconventional-changelog-angularконфиг переданconventional-changelog-coreв слиянии, затем передатьgit-raw-commitsПолучить данные журнала из локального git,conventional-changelog-parserЧтобы проанализировать информацию, предоставленную пользователем, интегрируйте два типа данных в один объект, передайтеconventional-changelog-writerСоздайте файл CHANGELOG.md

В начале установлено много плагинов.После завершения настройки это дело одной-двух команд.Если вам интересно,пожалуйста, обратитесь к моей статье и напишите шаблон для себя.Их тоже много готовые шаблоны на npm, которые можно использовать.Расширение VSCodeВключено в официальную рекомендацию обычного списка изменений,Местонахождение статьи, люди тоже в Наггетс 😏

Эта статья длинная, и в ней неизбежно будут ошибки и недочеты.Я надеюсь, что большие ребята оставят сообщение, чтобы поправить меня, чтобы не вводить людей в заблуждение

Справочная документация

Стандартная автоматизация для git commit , CHANGELOG и выпусков версий

Сообщение фиксации и руководство по написанию журнала изменений

conventional-changelog-core

git-log

package.json

vue-element-admin

VSCode Debugging