解决问题汇总贴

1,230 阅读3分钟

希望利用好掘金这个平台,记录汇总下自己日常遇到的问题及其解决方式,分享给大家,同求教更好的处理方式。记一些有意义的。

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 打开项目代码

  1. 打开vscode, 使用Command + shift + p, 输入shell,选择Shell 命令: 在PATH中安装“code”命令
  2. 终端中输入命令 $ 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