стиль кода
Зачем унифицировать стиль форматирования?
- Командная разработка, у всех разные редакторы и разные методы кодирования, что приводит к разным форматам кода, уродливому коду и сложности в обслуживании.
- Хорошая спецификация, подходит для итерации версии проекта и проверки кода.
- Сохраняйте код читабельным, код более удобочитаемым для членов команды
- У меня обсессивно-компульсивное расстройство, и я хочу стандартизировать, когда вижу неправильный формат, хахаха! ! !
Используйте инструменты?
-
husky: инструмент Git Hooks
- Некоторые команды, выполняемые git, запускаются соответствующими хуками для выполнения пользовательских программ-скриптов.
-
lint-staged: Обнаружить файловый плагин
- Обнаружьте только файлы в промежуточной области в git add и выполните скрипт для отфильтрованных файлов.
-
eslint: подключаемый модуль для обнаружения кода JavaScript.
- Стандарт кодирования Js, обнаружение и подсказка об ошибках или предупреждениях
-
prettier: инструмент форматирования кода
- Управление стилем кода, лучший эффект стиля кода
-
editorconfig: Спецификация кода файла
- Поддерживать единый стиль кодирования для нескольких разработчиков
-
commitlint: обнаружение отправки кода
- Проверьте, соответствует ли содержимое коммита git определенной спецификации.
-
commitizen: Стандартизация представления кода
- Подсказка для определения стандартного ввода содержимого коммита git
Установка инструмента и использование
husky
npm install husky@4.2.5 --save-dev
or
yarn add husky@4.2.5 -D
// 在package.json 中添加以下代码
"husky": {
"hooks": {
// 提交commit时触发
"pre-commit": "lint-staged",
// 检测commit的message时触发
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
/**
// gitHooks(常用hooks)
1.pre-commit:钩子在键入提交信息前运行。
2.prepare-commit-msg:钩子在启动提交信息编辑器之前,默认信息被创建之后运行。
3.commit-msg:钩子接收一个参数,存有当前提交信息的临时文件的路径。
如果该钩子脚本以非零值退出,Git 将放弃提交,
因此,可以用来在提交通过前验证项目状态或提交信息。
4.post-commit:钩子在整个提交过程完成后运行。
*/
lint-staged
npm install lint-staged --save-dev
or
yarn add lint-staged -D
// 在package.json 中添加以下代码
"scripts": {
"lint-staged": "lint-staged",
}
"lint-staged": {
// 匹配暂存区所有的js,vue文件,并执行命令
"*.{js,vue,jsx,tsx}": [
"prettier --write",
"eslint --cache --fix",
"git add"
]
}
eslint
- eslint-plugin-vue
- Плагин Eslint для vue.js (найти синтаксические ошибки vue, найти плохие директивы, найти руководства по стилю нарушений)
- eslint-plugin-prettier
- Запустите более красивый Eslint, сделайте более привлекательные правила более приоритетными, а Eslint — более низким.
- eslint-config-prettier
- Отменить все правила Eslint, которые могут конфликтовать с более красивыми правилами, и использовать более красивые для проверки кода.
- @babel/eslint-parser
- Этот синтаксический анализатор позволяет вам проверять весь код Babel с помощью Eslint.
- Поддерживается только последний окончательный стандарт ECMAScript, нет экспериментального синтаксиса.
- Компилятор разберет код в EsTree, который Eslint понимает (синтаксис ES2021 и т. д.).
npm install --save-dev
eslint
eslint-plugin-vue
eslint-plugin-prettier
eslint-config-prettier
@babel/eslint-parser
or
yarn add -D
eslint
eslint-plugin-vue
eslint-plugin-prettier
eslint-config-prettier
@babel/eslint-parser
// 在根目录新建 .eslintrc.js,并添加以下代码
module.exports = {
root: true,
parserOptions: {
parser: '@babel/eslint-parser', // 解析器
sourceType: 'module',
ecmaVersion: 12
},
env: {
browser: true,
node: true,
es2021: true
},
extends: [
'plugin:vue/vue3-recommended', // plugin-vue
'eslint:recommended', // eslint
'plugin:prettier/recommended' // plugin-prettier
],
rules: {
'prettier/prettier': 'error'
}
}
prettier
npm install --save-dev prettier
or
yarn add prettier -D
// 在根目录新建 .prettierrc.json 并添加以下代码
{
"singleQuote": true, // 使用单引号
"semi": false, // 不使用分号
"bracketSpacing": true, // 在对象,数组括号与文字之间加空格
"htmlWhitespaceSensitivity": "ignore", // 对html的空格不敏感
"endOfLine": "auto", // 行结尾统一样式,保持现有的行尾
"trailingComma": "none", // 对象,数组等末尾不加逗号
"tabWidth": 2 // 水平缩进的空格数为2
}
editorconfig
// 在根目录创建 .editorconfig 文件,添加以下代码
root = true
[*]
# 设置字符集
charset = utf-8
# 缩进风格
indent_style = space
# 缩进空格
indent_size = 2
# 结尾换行
end_of_line = crlf
# 文件末尾换行符
insert_final_newline = true
# 删除代码前后空格
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false
commitlint
npm install --save-dev @commitlint/config-conventional @commitlint/cli
or
yarn add @commitlint/config-conventional @commitlint/cli -D
npm install --save-dev @commitlint/config-conventional @commitlint/cli
or
yarn add @commitlint/config-conventional @commitlint/cli -D
// 在package.json中scripts中添加对应脚本
"scripts": {
"commitlint": "commitlint --config commitlint.config.js -e -V",
}
// 创建对应commitlint配置文件
echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commitlint.config.js
// 在根目录创建的commitlint.config.js 中添加以下代码
module.exports = {
extends: ['@commitlint/config-conventional'],
// 检测规则
rules: {
'type-enum': [
2,
'always',
[
'feat',
'fix',
'docs',
'style',
'refactor',
'perf',
'test',
'chore',
'revert',
'build'
]
],
'type-case': [0],
'type-empty': [0],
'scope-empty': [0],
'scope-case': [0],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never'],
'header-max-length': [0, 'always', 72]
}
}
commitizen
npm install --save-dev commitizen cz-customizable
npm install -g commitizen
or
yarn add commitizen cz-customizable -D
yarn global add commitizen
// 在package.json 中添加以下代码
// 这里用的自定义commitizen,使用git-cz执行git commit命令
"config": {
"commitizen": {
"path": "./node_modules/cz-customizable"
}
}
// 在根目录创建的.cz-config.js 添加以下代码,自定义commit提示内容
module.exports = {
types: [
{ value: 'feat', name: 'feat: 新功能' },
{ value: 'fix', name: 'fix: 修复' },
{ value: 'docs', name: 'docs: 文档变更' },
{ value: 'style', name: 'style: 代码格式(不影响代码运行的变动)' },
{
value: 'refactor',
name: 'refactor: 重构(既不是增加feature,也不是修复bug)'
},
{ value: 'perf', name: 'perf: 性能优化' },
{ value: 'test', name: 'test: 增加测试' },
{ value: 'chore', name: 'chore: 构建过程或辅助工具的变动' },
{ value: 'revert', name: 'revert: 回退' },
{ value: 'build', name: 'build: 打包' }
],
// override the messages, defaults are as follows
messages: {
type: '请选择提交类型:',
// scope: '请输入文件修改范围(可选):',
// used if allowCustomScopes is true
customScope: '请输入修改范围(可选):',
subject: '请简要描述提交(必填):',
body: '请输入详细描述(可选,待优化去除,跳过即可):',
// breaking: 'List any BREAKING CHANGES (optional):\n',
footer: '请输入要关闭的issue(待优化去除,跳过即可):',
confirmCommit: '确认使用以上信息提交?(y/n/e/h)'
},
allowCustomScopes: true,
// allowBreakingChanges: ['feat', 'fix'],
skipQuestions: ['body', 'footer'],
// limit subject length, commitlint默认是72
subjectLimit: 72
}
husky6.0
- Несколько дней назад обновилась версия хаски 6.0, а здесь обновляется волна конфигурации
- Новая версия хаски извлекает конфигурацию в корневой каталог, а конфигурация в package.json недействительна после обновления.
yarn add husky@6 --save-dev // 安装husky6.0 version
npx husky-init // 初始化husky配置,在根目录会有.husky配置文件,里面有初始化配置pre-commit
husky add .husky/commit-msg // 在husky配置中,添加commit-msg钩子
// 在.husky中的pre-commit中添加 npm run lint-staged
// 在.husky中的commit-msg中添加 npm run commitlint
Суммировать
Спецификация кода может значительно повысить эффективность кодирования, повысить удобство сопровождения кода командой и хорошо повлиять на последующее расширение кода. Следовательно, в процессе кодирования необходимо учитывать масштабируемость и ремонтопригодность кода, а спецификация кода обязательна.
напиши в конце
Порекомендуйте волну здесь,Vue3+Ts+Element-PLus, самый мощный и легкий фоновый шаблон с полным набором функций и интегрирует вышеуказанные характеристики! ! !
Делиться не просто, если этот шаблон полезен для вас, пожалуйста, нажмите звездочку! ! !
↓↓↓↓
Прикрепите адрес исходного кода:Система фонового управления Vue3+Ts+Element-PLus
Хорошие статьи в прошлом
«Продолжение точки останова Node.js»
«Поток браузера — цикл событий (цикл событий)»