Skip to main content

6 posts tagged with "long-term"

View All Tags

vue项目集成husky,lint-staged,commitlint

· 3 min read

需求场景

Git在多人合作时,应该尽量保持代码格式规范,以及commit信息清晰。这一点可以通过git的钩子实现。

解决方案

步骤一:安装husky添加pre-commit,commit-msg钩子

文档地址:https://typicode.github.io/husky/#/?id=automatic-recommended

hooks不生效原因: https://typicode.github.io/husky/#/?id=hooks-not-running

//安装husky,会在根目录生成.husky目录,以及pre-commit钩子
npx husky-init
npm install
//添加commit-msg钩子,unix环境
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
//添加commit-msg钩子,windows环境下
//node_modules/.bin/husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

步骤二:安装commitlint并配置规则

文档地址:https://commitlint.js.org/#/guides-local-setup?id=install-commitlint

config-conventional默认配置:https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/index.js

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

新建.commitlintrc.js文件配填写以下配置

module.exports = {
/* type(scope?): subject 例子:feat(server): test */
// 使用预设的配置 https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/index.js
extends: ["@commitlint/config-conventional"],
rules: {
"type-enum": [
2,
"always",
["feat", "fix", "docs", "style", "refactor", "chore", "revert"],
], // 改变预设中的提交类型
"type-case": [2, "always", "lower-case"], // 提交类型必须使用小写
"type-empty": [2, "never"], // type不能为空
// 'header-max-length': [2, 'always', 5], // header内容的最大长度为5
// 'subject-min-length': [2, 'always', 1], // subject内容的最小长度为1
// 'body-max-length': [2, 'always', 10], // body内容的最大长度为10
// 'footer-max-length': [2, 'always', 5], // footer内容的最大长度为5
},
};

确保husky的commit-msg钩子内容如下

#!/bin/sh
. "$(dirname -- "$0")/_/husky.sh"

npx --no-install commitlint --edit $1

步骤三:安装lint-staged并配置规则

文档地址:https://github.com/okonet/lint-staged#readme

npm i lint-staged -D

在package.json中填写以下配置

{
"lint-staged": {
"src/**/*.{js,json,vue,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
]
}
}

确保husky的pre-commit钩子内容如下

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx --no-install lint-staged

docker常用命令

· One min read

docker常用命令

#列出镜像
docker images
#删除镜像
docker rmi
#删除全部镜像
docker rmi $(docker images -q)
#列出全部容器
docker ps -a
#重启容器
docker restart
#删除容器docker rm
#查看容器日志
docker logs
#删除所有停止的容器
docker container prune
#删除所有容器
docker rm $(docker ps -aq)
#进入容器
docker exec -it 775c7c9ee1e1 /bin/bash

docker-compose常用命令

#启动docker并加入后台进程
docker-compose up -d
#更新容器镜像
docker-compose pull
#关闭所有容器
docker-compose stop
#重启nginx
docker-compose restart nginx
#启动nginx
docker-compose start nginx
#关闭nginx
docker-compose stop nginx
#查看全部container
docker-compose ps
#删除全部停止的container
docker-compose rm

git常用场景操作指南

· 2 min read

场景一:fork别人的代码,添加功能的同时想要同步作者的更新。

添加upstream的git地址

git remote add upstream url

同步更新

git fetch upstream
git merge upstream/master

场景二:fork别人的代码,想要为他添加新功能Pull request

# 基于远程master分支创建新的分支,开发完成后提交pull request
git checkout -b feature-1 upstream/master

场景三:删除本地以及远程分支

git branch -d dev
git push origin -d dev

场景四:撤销commit(版本回退)

#例如从状态D回到状态B
git reset --hard B
git reset --soft D
git push

场景五: 合并多次commit

git rebase -i commitId
vim状态下第一个保持pick,下面的改为s(squash)
vim状态下在不需要的commit信息加#注释
git push origin branchName -f

场景六:多分支并行开发

git worktree add ../A -b vA
git push --set-upstream origin vA

场景七:清除全部git记录(慎用,主要用来清理之前的不规范提交)

//新建没有提交记录的分支
git checkout --orphan latest_temp_branch
git add -A
git commit -m "Initial commit"
// 删除原来分支
git branch -d master
// 将当前分支重命名为master
git branch -m master
// 强制同步修改至远程仓库
git push -f origin master
// 关联本地 master 到远程 master
git branch --set-upstream-to=origin/master

场景八:upate .gitignore

git rm -r --cached .
git add .
git commit -m 'chore: update .gitignore'
git push -u origin master

js常用正则表达式整理

· 2 min read

在线正则表达式工具

基于Web开发者助手FeHelper修改的在线正则表达式工具

常用字符

#匹配中文字符                  /[\u4e00-\u9fa5]/gm
#匹配双字节字符 /[^\x00-\xff]/igm
#匹配行尾行首空白 /(^\s*)|(\s*$)/
#只能输入数字 /^\d+$/
#只能输入n个数字 /^\d{n}$/
#至少输入n个以上的数字 /^\d{n,}$/
#只能输入m到n个数字 /^\d{m,n}$/
#只能由英文字母组成 /^[a-z]+$/i
#只能由大写英文字母组成 /^[A-Z]+$/
#只能由英文和数字组成 /^[a-z0-9]+$/i
#只能由英文、数字、下划线组成 /^\w+$/

常用表单

#匹配Email地址          /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/   
#匹配URL地址 /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i
#匹配手机号码 /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/
#匹配身份证号 /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/
#匹配邮编号 /^[1-9]\d{5}(?!\d)$/
#匹配日期(yyyy-MM-dd) /^[1-2][0-9][0-9][0-9]-[0-1]{0,1}[0-9]-[0-3]{0,1}[0-9]$/

vim 常用命令

· 2 min read

需求场景

当ssh远程登录linux服务器时,修改文件是最常见的需求了。一开始学了点vim的基础操作,简单的修改文件中的几个值不是问题。后来慢慢的需要修改的东西变多了(大概是折腾的更深入了吧),这时简单的修改已经不太好使了。后来了解到vscode的远程编辑文件,这是真的香啊。以为再也不需要学vim这么复杂的东西了。直到后来,vscode远程编辑经常断线重连,吃服务器内存很高,cpu负载爆高,而且时不时总有终端访问服务器的需求。才发现,vscode远程编辑不是银弹啊,还是老老实实学点vim的基本操作吧,孰能生巧嘛。

显示

set nu显示行号

查找

/ 向下查找(配合n使用)
? 向上查找(配合n使用)

移动

:n 移动到n行
g^ 移动到行首
g$ 移动到行尾
gg 移动到文件开头
G 移动到文件结尾

编辑

y   v进入可视模式,光标选择复制
yy 复制一行
y^ 复制当前到行头的内容;
y$ 复制当前到行尾的内容;
ygg 复制文件开头
yG 复制到文件结尾
d 删除(命令同复制)
p 粘贴
u 撤销

ubuntu常用命令

· 2 min read

用户权限

#修改文件用户组
sudo chown -R pi:pi downloads/
sudo chown -R $(whoami) downloads/
#将用户添加到docker用户组,使用docker命令免输sudo
sudo usermod -aG docker $USER

端口

#查看开放端口
netstat -ltp
sudo lsof -i | grep -i listen
# 查看v2ray端口占用
sudo lsof -i | grep v2ray
# 查看80端口占用
sudo lsof -i:80

文件查找

# 递归查找并删除文件
find . -name "*.less" | xargs rm -rf

systemctl

#刷新配置
systemctl daemon-reload
#查看定时任务
systemctl list-timers
#查看开机启动项
systemctl list-unit-files --type=service | grep enabled
# 设置开机启动
systemctl enable v2ray
# 运行v2ray
systemctl start v2ray
# 重启v2ray
systemctl restart v2ray

解压缩

#解压tar包
tar -xvf file.tar
#解压tar.gz包
tar -zxvf file.tar.gz
#压缩tar.gz包
tar -zcvf file.tar.gz dir/
#解压tar.xz包
tar -xvJf node-v8.11.1-linux-x64.tar.xz

其他

#查看service启动日志
journalctl -u nginx.service -f
#查看应用日志文件
tail -f /var/log/nginx/error.log
#查看磁盘容量
df -h
#查看目录大小
du -sh *
#生成ssh公钥
ssh-keygen -t rsa
#设置别名
alias rm='rm -f'
#复制到剪切板
cat file.txt | pbcopy
# 查看防火墙当前状态
sudo ufw status
#查看系统时间
date -R
#设置时区
dpkg-reconfigure tzdata