402 - 《分享:我的小技巧集合》

发布于 2024年1月14日

之前写的小技巧系列集合,内部分享稿。加了删除线的最后一次分享由于时间原因做的删减,并非不适用。
时间:30min。

编程技巧篇

1、一个 Terminal 技巧,给自定义命令加了「,」前缀。好处是 1)和系统命令不冲突,2)敲「,」可以提示所有自定义命令,见图,来自一篇 2009 年的老文

2、又一个 Terminal 技巧,配置 alias -s {html,css,js}=codealias -s git="git clone --depth 1",然后比如直接输入 git@github.com:umijs/umi.git 就会做 clone,无需输入 git clone。

3、一个省时间的技巧,随机分支,再也不需要为分支名发愁了!我写了个自定义脚本,会随机 checkout 到名为「sorrycc-xxxx」的分支。脚本如下。

import 'zx/globals';
(async () => {
  const length = 4;
  const id = (Math.random() * 1e20).toString(36).substring(0, length);
  await $`git checkout -b sorrycc-${id}`;
})();

4、和上一条技巧有个类似的,随机临时目录。我经常需要找个临时目录做一些事情,完成后就再也不需要这里的文件了。于是写了个脚本,在临时目录创建并进入名为「sorrycc-xxxxxx」的目录。由于是临时目录,重启后这里的文件会被自动删除。脚本如下。

alias cdtmp='cd `mktemp -d /tmp/sorrycc-XXXXXX`'

5、调试代码时之前只知道加 debugger; 。没想到还有 debug(functionName) 这种用法,当函数被调用时会进入 debug 模式。一个用法是想知道函数在哪里被定义,也可以用这个。参考 https://developer.chrome.com/docs/devtools/javascript/breakpoints/#function

6、如何删除本地被 Merge 过的分支?

$ git branch
* master
  sorrycc-8729
  sorrycc-cr9e

# 用 -d 只会删除 Merge 过的分支,换成 -D 会全部删除
$ git branch | grep -v "master" | xargs git branch -d
Deleted branch sorrycc-8729 (was c4a4870).
Deleted branch sorrycc-cr9e (was b522126).

$ git branch
* master

7、lint-staged 失败后文件丢失?可尝试通过 git stash pop 找回。

8、不知大家是如何排查组件是否 re-render?console.log?react devtool?一个好用直观的小技巧是,在组件层加一级 Math.random() 输出。比如 <div>{Math.random()}</div>

9、monorepo 用 pnpm publish 可以自动更新版本号,可以让发布省不少事。

{
  "dependencies": {
    "@umijs/bundler-utils": "workspace:*"
  },
}

10、381 - 《熟练掌握 Copilot Chat》

11、VSCode 下有个叫「Error Lens」插件非常好用,相见恨晚,可以在行内显示潜在出错信息,Intellij 系与之对应的插件叫「InlineError」。

12、学到一个 Bash 技巧,让 touch、vi 和 take 可以自动创建目录。

,touch () {
	mkdir -p "$(dirname "$1")" && touch "$1"
}
,vi () {
	mkdir -p "$(dirname "$1")" && vi "$1"
}
,take () {
	mkdir -p "$(dirname "$1")" && take "$1"
}

13、换了个 VSCode 主题「Nako」,红色系,挺好看。更新:现在用的是 「Quiet Light」。

14、习惯用 Purrple Cat 作为工作背景音。

15、如何 Profile Node 应用?1、跑 Node 时加 --cpu-prof 参数,比如 node --cpu-prof $(which npm) run version,结束后会产出一个或多个 .cpuprofile 文件,2、打开 https://www.speedscope.app/ 上传文件即可查看火焰图,包含详细的堆栈信息。参考这个这个

16、Benchmark 方法,用 brew 装个 hyperfine,然后 hyperfine --runs 10 'umi -v' 就可以看到 umi -v 跑 10 次的性能结果。

17、VSCode 有两个容易被忽略的快捷键,1)Ctrl+R,可以快速打开或切换项目,2)Ctrl+Q,可以切换 Panel

18、如果 Node 没有退出,可以用 why-is-node-runningwtfnode 查看原因。

19、echo $? 可以查看上一条命令的 exit code。

20、VSCode 配置里可以开「terminal.integrated.copyOnSelection」,让 Terminal 里选择既复制,和 iTerm 保持体验一致。

21、买一个橡皮鸭,对着他讲解东西。

22、VSCode 可以把侧边栏改成在上方显示,让横向空间更多一些。(注:有人推荐 Gruntfuggly.activitusbar 或 anweber.statusbar-commands 插件,可以把侧边栏放在状态栏里)

23、如何在提交时做 Prettier 但又忽略失败的场景?因为 prettier 有用但又没有重要到需要让 CI 失败。参考 https://github.com/cpojer/vite-ts-react-tailwind-template/commit/9cd0f93f8a0a68a81e6be72115a082c559d8a9c5https://twitter.com/cpojer/status/1730408872563916963 。另一个技巧是 Astro 的做法,有个 CI 做 Prettier 的事,如果有 diff,CI 自动给你的分支 push 一个 format 过的 commit 。

24、iTerm2 里正确配置用 VSCode 打开文件和行,设置、Profiles、Advanced、Semantic History,选 Run Command…,输入 code --goto \1:\2,如果找不到命令,可以写全 code 的路径,比如 /usr/local/bin/code --goto \1:\2

系统工具篇

1、mas 命令可以在命令行里安装 Mac 软件,一个好用的场景是在换电脑时重装软件时。

mas list
mas upgrade
mas search Tot
mas install 1491071483

2、gh 命令可以在命令行里操作 github,比如提 PR、绑定 ssh key 等,相见恨晚。我的常用命令。

gh auth login
gh pr create --fill
gh pr checkout 353
gh ssh-key add ~/.ssh/github.pub -t MBP2023

3、用 Zerotier 把家里所有电脑和手机都连起来,回老家后也可以无缝连回家里的 NAS 和 Windows 电脑。

4、在「Privacy & Security > Developer Tools」里把 Terminal 等开发者工具加上,绕开系统的安全策略,据说可以让请求和编译更快。来源

5、查 IP 或运营商数据可在命令行中输入「curl cip.cc」。

$ curl cip.cc
IP	: 42.120.103.61
地址	: 中国  浙江  杭州
运营商	: 阿里云/电信/联通/移动/铁通/教育网
数据二	: 浙江省杭州市 |

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。