希望利用好掘金这个平台,记录汇总下自己日常遇到的问题及其解决方式,分享给大家,同求教更好的处理方式。记一些有意义的。
1. Mac卸载搜狗输入法
利用Lemon卸载了sogou输入法,发现进程中还有SogouServices
,记录下另一种卸载方式,彻底点!
# rm -rf /Library/Input\ Methods/SogouInput.app
# rm -rf /Users/自己用户名/Library/Caches/SogouServices
# rm -rf /Users/自己用户名/.sogouinput
2. VS Code Counter 与 rg进程
market中统计项目代码行数的插件数VS Code Counter
最具人气了,可是几次三番安装卸载都不能正常使用,
起初觉得是其他插件影响,逐个卸载其余插件,重试依旧无效。
后来怀疑是VS Code版本和插件版本不匹配导致的,又分别进行了降级,依旧不见效果。
今天碰巧看到内存占用过高,打开活动监视器
看了下进程情况,无意发现了rg
进程,占用了大量内存和CPU时间,一bing才知,原来是老相识了,许久不打交道,都快把它忘记了,这不就那啥么,其实我还真说不清楚,就知道跟VS Code有关,还知道跟一个配置项"search.followSymlinks"
有关。
具体做法:文件>首选项>设置,搜索设置 "search.followSymlinks": false
之后你再运行统计命令,应该会快的飞起:command + shift + p
> VSCodeCounter: Count lines in workspace
P.S. VS Code Counter
的一些配置项
在
settings.json
中配置
VSCodeCounter.useGitignore
: 是否使用.gitignore
排除文件
VSCodeCounter.useFilesExclude
: 是否使用files.exclude
排除文件
VSCodeCounter.printNumberWithCommas
: 是否打印以逗号作为千位分隔符的数字。(CSV除外)
VSCodeCounter.ignoreUnsupportedFile
: 忽略不支持的文件
VSCodeCounter.endOfLine
: 要在输出文件中使用新行字符
VSCodeCounter.include
: 以glob模式配置需要包含在内的文件和文件夹
VSCodeCounter.exclude
: 以glob模式配置需要排除在外的文件和文件夹
VSCodeCounter.outputDirectory
: 用于输出结果的目录路径
VSCodeCounter.outputAsText
: 是否将结果输出为文本文件
VSCodeCounter.outputAsCSV
: 是否将结果输出为CSV文件
VSCodeCounter.outputAsMarkdown
: 是否将结果输出为标记文件
VSCodeCounter.outputPreviewType
: 类型输出文件,以预览后计数。从文本、csv、markdown或none中选择
VSCodeCounter.saveLocation
: 指定存储收集的语言配置的位置
3. code命令用 VS Code 打开项目代码
- 打开
vscode
, 使用Command + shift + p
, 输入shell
,选择Shell 命令: 在PATH中安装“code”命令
- 终端中输入命令
$ code [dir]/
4. nrm 与 yrm
- 查看镜像源
npm/yarn config get registry
- 设置镜像源
npm/yarn config set registry https://registry.npm.taobao.org/
- 安装nrm/yrm
npm install -g nrm yrm
- 一些命令
nrm ls
nrm use taobao
yrm ls
yrm use taobao
5. react antd配置less的时候报错
ValidationError: Invalid options object. Less Loader has been initialized using an options object that does not match the API schema.
options has an unknown property ‘source’. These properties are valid:
object { lessOptions?, prependData?, appendData?, sourceMap? }
解决方案:将less-loader版本回退到5,然后使用5的配置方式
const { override, fixBabelImports, addLessLoader } = require('customize-cra')
const theme = require('./theme')
module.exports = override(
fixBabelImports('antd', {
libraryDirectory: 'es',
style: true,
}),
addLessLoader({
lessOptions: { // 如果使用less-loader@5,请移除 lessOptions 这一级直接配置选项。
javascriptEnabled: true,
modifyVars: theme,
},
}),
);
6. 统一代码风格工具——editorConfig
在团队开发中,统一的代码格式是必要的。但是不同开发人员的代码风格不同,代码编辑工具的默认格式也不相同,这样就造成代码的differ。而editorConfig可以帮助开发人员在不同的编辑器和IDE中定义和维护一致的编码风格。
当打开一个文件时,EditorConfig插件会在打开文件的目录和其每一级父目录查找.editorconfig文件,直到有一个配置文件root=true
EditorConfig的配置文件是从上往下读取的并且最近的EditorConfig配置文件会被最先读取. 匹配EditorConfig配置文件中的配置项会按照读取顺序被应用, 所以最近的配置文件中的配置项拥有优先权
如果.editorconfig文件没有进行某些配置,则使用编辑器默认的设置。
* 匹配除/之外的任意字符串
** 匹配任意字符串
? 匹配任意单个字符
[name] 匹配name中的任意一个单一字符
[!name] 匹配不存在name中的任意一个单一字符
{s1,s2,s3} 匹配给定的字符串中的任意一个(用逗号分隔)
{num1..num2} 匹配num1到num2之间的任意一个整数, 这里的num1和num2可以为正整数也可以为负整数
indent_style 设置缩进风格(tab是硬缩进,space为软缩进)
indent_size 用一个整数定义的列数来设置缩进的宽度,如果indent_style为tab,则此属性默认为tab_width
tab_width 用一个整数来设置tab缩进的列数。默认是indent_size
end_of_line 设置换行符,值为lf、cr和crlf
charset 设置编码,值为latin1、utf-8、utf-8-bom、utf-16be和utf-16le,不建议使用utf-8-bom
trim_trailing_whitespace 设为true表示会去除换行行首的任意空白字符。
insert_final_newline 设为true表示使文件以一个空白行结尾
root 表示是最顶层的配置文件,发现设为true时,才会停止查找.editorconfig文件
VS Code 中自动生成此配置文件
在 vscode 中使用时可以安装 EditorConfig for VS Code
插件,然后 ctrl + shift + p
调出命令面板,输入 editorconfig
就可以看到 Generator .editorconfig
命令,选择命令后根目录就会生成初始的 .editorconfig
文件。
7. 限定项目的Node.js版本
限定项目运行所需的 Node.js 版本可保证项目在一个稳定可预期的环境中运行,减少不必要的故障。甚至有些依赖库只能工作于某些版本下。同时,不加以限制的话,在多人合作的项目中恐怕会引起环境不一致带来的兼容性问题,部署上也会存在相同的问题。
为项目指定 Node.js 的版本可通过版本管理器,或者通过 package.json 中添加相应属性来实现。
管理 Node.js 的版本最好可通过相应的版本管理器来完成,比如 nvm。用法在 nvm --help
中描述得很详尽。
通过在项目根目录创建一个 .nvmrc
,其中写上需要的 Node.js 版本号。这个版本号不一定是数字,可以是 nvm 能够理解的其他别称,详见 nvm --help
中对 <version> 的描述。
# 将当前版本写入
$ node -v > .nvmrc
# 使用 5.9 的版本
$ echo "5.9" > .nvmrc
# 使用最新的 LTS (Long-term Support) 版本
$ echo "lts/*" > .nvmrc
# 使用最新的 Node.js 版本
$ echo "node" > .nvmrc
在执行如下这些命令时,会自动读取 .nvmrc 中版本号以应用上,这样协作者将项目 clone 下来后直接 nvm use 就直接切换到相应版本,如果本地没有安装,nvm install 则会安装相应版本。
nvm use
nvm install
nvm exec
nvm run
nvm which
根据 npm-package 文档的描述,可以在 package.json 中通过 engines 属性指定 Node.js 的版本。
{
"engines": { "node": ">=0.10.3 <0.12" }
}
限定npm版本
{
"engines": { "npm": "~1.0.20" }
}
在执行 npm install 安装项目依赖时,这个设置并不生效,相反,非官方的 yarn 是有效(respect)的,它会检查这里的设置,如果当前环境与所需不匹配,直接报错,推荐使用yarn安装。
使用npm需要手动写脚本
$ npm i -D semver
$ touch checkver.js
实现我们检查版本的逻辑
checkver.js
const semver = require("semver");
const { engines } = require("./package");
const version = engines.node;
if (!semver.satisfies(process.version, version)) {
console.error(</span>Required node version <span class="pl-s1"><span class="pl-pse">${</span>version<span class="pl-pse">}</span></span>, got: <span class="pl-s1"><span class="pl-pse">${</span><span class="pl-c1">process</span>.<span class="pl-c1">version</span><span class="pl-pse">}</span></span>.<span class="pl-pds">);
process.exit(1);
}
添加 postinstall 命令到 package.json
{
"scripts": {
"postinstall": "node ./checkver.js"
}
}
8. git 新建分支并推送
# 查看分支状态
git branch [-a]
# 新建本地分支
git checkout -b pc-fenyong
# 推送远程
# 建立本地到远端仓库的链接
git push --set-upstream origin pc-fenyong
git branch --set-upstream-to=origin/pc-fenyong
# 取消对pc-fenyong的跟踪
git branch --unset-upstream pc-fenyong
or
git push origin HEAD -u
or
# 强制推送,同名覆盖
git push origin pc-fenyong [--force]
or
# 提交本地 pc-fenyong 分支作为远程的 pc-fenyong 分支
git push origin pc-fenyong:pc-fenyong
# 将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了
git push -u origin master[:master]
# 删除分支
git push origin :pc-fenyong
or
git push origin --delete pc-fenyong