独书先生 Menu

git commit规范

依赖安装

1. 生成commit信息

npm install --save-dev commitizen

npx commitizen init cz-conventional-changelog --save-dev --save-exact

package.json

"scripts": {
   "commit": "git-cz"
}

2. commit校验

npm install --save-dev @commitlint/config-conventional @commitlint/cli

echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
修改文件commitlint.config.js为正常格式

3. 更新版本、生成changelog、打tag

npm i --save-dev standard-version

package.json

 "scripts": {
    "release": "standard-version"
  }

commit使用步骤

提交代码

git pull
git add .
npm run commit
npm run release -- --prerelease
git push --follow-tags origin master

commit规范

npm run commit后根据交互提示编写
1. type

type为必填项,用于指定commit的类型
# 主要type
feat:     增加新功能
fix:      修复bug

# 特殊type
docs:     只改动了文档相关的内容
style:    不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
build:    构造工具的或者外部依赖的改动,例如webpack,npm
refactor: 代码重构时使用
revert:   执行git revert打印的message

# 不常使用type
test:     添加测试或者修改现有测试
perf:     提高性能的改动
ci:       与CI(持续集成服务)有关的改动
chore:    不修改src或者test的其余修改,例如构建过程或辅助工具的变动
复制代码当一次改动包括主要type与特殊type时,统一采用主要type。
  1. scope

scope也为必填项,用于描述改动的范围,例如在业务项目中可以依据菜单或者功能模块划分,如果是组件库开发,则可以依据组件划分

  1. subject

subject是commit的简短描述

  1. body

commit的详细描述,说明代码提交的详细说明。主要描述改动之前的情况及修改动机,对于小的修改不作要求,但是重大需求、更新等必须添加body来作说明。

  1. break changes

break changes指明是否产生了破坏性修改,涉及break changes的改动必须指明该项,类似版本升级、接口参数减少、接口删除、迁移等。

  1. affect issues

affect issues指明是否影响了某个问题。格式为: fix #{issue_id}
例如:

re #2
fix #14

发布版本

在多次commit之后,可能需要发布一个新版本,以下命令会自动更新版本号

npm run release -- --prerelease
git push --follow-tags origin master 

详细使用:https://github.com/conventional-changelog/standard-version

参考

  • https://juejin.im/post/5cea2c4bf265da1b6836993f
  • https://juejin.im/post/5cc4694a6fb9a03238106eb9
  • https://juejin.im/post/5d0b3f8c6fb9a07ec07fc5d0

如何清除微信网页缓存nginx配置 | 终极解决方案亲测有效

问题

微信为了提高自身的性能,对微信网页进行了缓存,且普通方法无法及时清除,项目更新后,微信无法及时更新网页内容

解决方案:

更改服务器配置,强制不缓存入口文件,通常为网站首页(index.html),其他静态正常缓存,再针对首页中引入的资源文件(js/css)采用修改文件名及文件引入链接强制获取新的文件避免缓存。

操作步骤:

  1. 在nginx中修改配置文件(nginx.conf),在所有的网站首页匹配的location /下增加#### kill cache的部分,如下:
location / {
    root   /mnt/dat1/test/tes-app;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
    #### kill cache
    add_header Last-Modified $date_gmt;
    add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
    if_modified_since off;
    expires off;
    etag off;
}
  1. 修改index.html中的资源引入链接,分两种情况:
    • 一是前端框架已经做好了打包后的文件名自动携带hash值,且引入链接也自动修改了,这种情况无需手动再修改文件名
    • 二是部分系统采用的原始引入方式开发,没有自动打包系统的,需要自己手动更改文件名和引入链接,如下:
<script type="text/javascript" src="js/login.js" ></script>

更改为

<script type="text/javascript" src="js/login_01.js" ></script>

且login.js重命名为login_01.js即可

html解析<号>号出现字符实体< &gt: &如何转义

问题:

在用wordpress的markdown插件写文章的时候,发现代码块偶尔无法正常解析 <>

类似这样:

暴雨直下眼迷茫,
大风骤起飕脸庞。
雷声贯耳家中藏,
草香扑鼻思故乡。
&lt;/pre&gt;&lt;/div&gt;

分析:

说明在解析文章的时候,得到的字符串为字符实体,然后网上找了通过字符串替换的方法解决这个问题

以下为相互转换的js函数

//<转义为<
function escapeHTML(str){
    str = "" + str;
    return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "&apos;");
},
//<还原为<
function unescapeHTML(str){
    str = "" + str;
    return str.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(/&apos;/g, "'");
}

解决:

运用到wordpress博客中,可以在编辑主题中,修改function.php源码,加入一段插入页脚的方法,塞入你的js代码即可,以下为新加入的页脚代码,加在function.php的头部即可,后续有新的js代码也可以写在这里:

// 自定义脚本 ------------------------------------------start
function wpb_hook_javascript_footer() {
?>
<script>
function unescapeHTML(a){
    a = "" + a;
    return a.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(/&apos;/g, "'");
}
var codeContainers = document.querySelectorAll(".codecolorer-container");
if(codeContainers.length > 0){
    for(var i = 0; i < codeContainers.length; i++){
        codeContainers[i].innerText = unescapeHTML(codeContainers[i].innerText)
    }
}
</script>
<?php
}
add_action('wp_footer', 'wpb_hook_javascript_footer');
// 自定义脚本 ------------------------------------------end

感谢:
https://www.cnblogs.com/LiuLiangXuan/p/5212155.html
https://boke112.com/post/5981.html

Linux下运行shell脚本显示cd: $’ \r\r’: No such file or directory没有那个文件或目录

问题:

本地写好一个 shell 脚本,传到服务器, 用 ./ 运行脚本文件出现 报错信息 cd: \$’ \r\r’: No such file or directory 或者是 /usr/bin/env: “bash\r”: 提示没有那个文件或目录

分析:

linux 环境下, \r 表示把光标移到行首,不显示任何内容. 猜测是自己写的脚本的格式不正确, 导致脚本在 linux 环境下解析出含有\r

解决办法:

用 vim 打开.sh 脚本文件, 重新设置文件的格式

:set ff 然后回车   再重新设置下文件格式:

:set ff=unix 然后保存退出

:wq! 回车
参考自: https://appsoftea.com/zh/linux-bash-no-such-file-or-directory/

gnvm切换node版本

问题:

npm运行项目时,报错:

Found binding for the following environments:
- Windows 64-bit with Node.js 11.x

发现此项目的npm包需要11.x版本node,那么为了不影响其他项目,可以采取管理多个node版本的方法,跟多版本python类似

Continue reading…

Xshell、Xftp 5、6 解决“要继续使用此程序,您必须应用最新的更新或使用新版本”

问题:

打开Xshell的时候,报 “要继续使用此程序,您必须应用最新的更新或使用新版本”,如何不更新软件继续使用

解决:

  1. 找到软件安装目录下的 nslicense.dll ,比如我的在: C:\Program Files (x86)\NetSarang\Xshell 6 文件夹下
  2. 复制到自定义的文件夹, 用文本编辑软件打开(sublime / Nodepad++ / VSCode等)
  3. 搜索: 7F0C 81F9 8033 E101,将后面的 0F86 , 改成 0F83,保存文件
  4. 再把修改后的 nslicense.dll 文件粘贴回源目录覆盖即可(提示需要管理员点继续即可)
  5. 针对Xftp也是相同的操作来一遍 C:\Program Files (x86)\NetSarang\Xftp 6

最后推荐下小编现在这个网站用的服务器,是BlueHost的虚拟主机服务,支持一键快速搭建wordpress博客网站,免备案,全球CDN,通过我这个下方的链接注册还有优惠,购买后截图发给微信 liurunze— 可以返现30元现金。 免备案的BlueHost主机

感谢:
https://appsoftea.com/zh/xshell-xftp-donot-update
https://www.cnblogs.com/JasonCeng/p/11673999.html

git创建仓库提交代码

创建一个仓库后

# Git global setup
git config --global user.name "独书先生"
git config --global user.email "1414556676@qq.com"

# Create a new repository
git clone ssh://git@github.com/DuShuSir/openSource.git
cd jystaticft
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

# Push an existing folder
cd existing\_folder
git init
git remote add origin ssh://git@github.com/DuShuSir/openSource.git
git add .
git commit -m "Initial commit"
git push -u origin master

# Push an existing Git repository**
cd existing\_repo
git remote rename origin old-origin
git remote add origin ssh://git@github.com/DuShuSir/openSource.git
git push -u origin --all
git push -u origin --tags

删除GitHub中的所有提交历史记录

删除.git文件夹可能会导致git存储库中的问题。如果要删除所有提交历史记录,但将代码保持在当前状态,可以按照以下方式安全地执行此操作:

  1. 尝试 运行 git checkout –orphan latest_branch
  2. 添加所有文件 git add -A
  3. 提交更改 git commit -am “commit message”
  4. 删除分支 git branch -D master
  5. 将当前分支重命名 git branch -m master
  6. 最后,强制更新存储 git push -f origin master

设置本地多账户

git init
git add .
git commit -m "init"
git remote add origin https://github.com/Dushusir/lwa.git
git remote set-url origin https://Dushusir@github.com/Dushusir/lwa.git
git config --local credential.helper store
git push -u origin master

详细理解多账户:

git多账户管理: 区分全局账户和本地账户

git tag 打标签

在commit之后

git tag -a release-v0.0.0 -m "内容"
git push origin release-v0.0.0

git 撤销 add commit 操作:

git reset HEAD .

参考

https://appsoftea.com/zh/git-init-repository-push-code/

谷歌浏览器禁止同源策略支持跨域 | windows, Chrome 80+

问题

前端开发经常遇到跨域问题,会有同源策略的限制,保证网站安全

解决

谷歌浏览器直接禁止同源策略,亲测谷歌浏览器版本 80.0.3987.116(正式版本) (64 位)可以生效,windows环境下

步骤

  1. 找到桌面上的谷歌浏览器快捷方式,复制粘贴一个出来
  2. 右击这个复制出来的图标-点击属性
  3. 修改目标那一栏的内容,在原内容基础上加上 --disable-web-security --user-data-dir="c:/chromedev"

结果类似于:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="c:/chromedev"

4.先关闭谷歌浏览器,然后双击复制的那个图标打开谷歌浏览器,如果顶部有提示”您使用的是不受支持的命令行标记:--disable-web-security。稳定性和安全性会有所下降。”就是设置成功。

觉得不明白的小伙伴可以参考以下视频教程

原文:https://appsoftea.com/zh/disable-same-origin-policy-in-chrome/
参考:https://stackoverflow.com/questions/3102819/disable-same-origin-policy-in-chrome

阿里云服务器如何配置docker镜像加速器

购买阿里云服务器后,安装docker镜像会比较慢,这时候通常可以使用阿里云的docker镜像代理服务

第一步:

注册阿里云,并购买服务器

阿里云

第二步:

去阿里云后台的容器镜像服,查看自己的专属镜像加速器地址

容器镜像服务

第三步:

安装或者升级docker,确保docker版本高于1.10.0

docker安装

第四步:

修改守护进程daemon的配置文件/etc/docker/daemon.json

vim命令指导

  1. vim /etc/docker/daemon.json

  2. 配置

{
"registry-mirrors": ["<a href="https://4wgtxa6q.mirror.aliyuncs.com">https://4wgtxa6q.mirror.aliyuncs.com</a>"]
}
  1. service docker restart //重启docker

Nuxt VSCODE node调试

问题

Nuxt使用时是有server端的,服务端使用node, 要想启动服务端代码的调试功能, 就需要额外配置

解决方案

在编辑器里启动调试功能,用VSCODE最佳,(使用谷歌浏览器也可以,但是比较麻烦,这里暂不研究)
  Continue reading…