npm install husky --save-dev
npm install lint-staged --save-dev
// prettier
npm install prettier --save-dev
// eslint 相关
npm install eslint eslint-config-airbnb eslint-config-prettier eslint-formatter-pretty eslint-plugin-compat eslint-plugin-import eslint-plugin-promise --save-dev
// 样式相关
npm install stylelint-config-standard stylelint-config-prettier --save-dev
这里使用了eslint
和prettier
两种方式混合检测,先用eslint检测,再用prettier检查,并自动修复格式问题后提交
在上面我们安装了很多关于eslint的插件,来看看各是什么作用
插件 | 说明 |
---|---|
eslint-config-airbnb | eslint airebnb 标准,除此之外,还有eslint-config-google 和eslint-config-standard 等标准。github |
eslint-config-prettier | 通过使用eslint-config-prettier配置,能够关闭一些不必要的或者是与prettier冲突的lint选项。这样我们就不会看到一些error同时出现两次。github |
eslint-formatter-pretty | 美化eslint错误,告警输出,在命令行使用eslint --fix --cache --format=pretty |
eslint-plugin-compat | 检测浏览器的兼容性。将 “compat” 添加到 .eslintrc”plugins” 部分,将 “browser”: true 添加到 “env”。github |
eslint-plugin-import | 此插件旨在支持ES2015 +(ES6 +)导入/导出语法的linting,并防止错误拼写文件路径和导入名称的问题。 |
eslint-plugin-promise | 检测promise.注意,如果全局安装了eslint,那么此插件也必须全局安装。github |
package.json配置
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
"lint-staged": {
"*.js": [
"eslint --fix --cache --format=pretty",
"prettier --ignore-path .eslintignore --single-quote --write",
"git add"
]
},
使用了stylelint
添加.stylelintrc
,并配置两插件
{
"extends": ["stylelint-config-standard", "stylelint-config-prettier"]
}
增加使用eslint-plugin-vue
插件,具体使用 https://vuejs.github.io/eslint-plugin-vue/
支持webpack
别入引入 使用eslint-import-resolver-webpack
.eslintrc
增加配置
解析vue,使用parserOptions.parser
,增加plugin:vue/recommended
到extends,增加setting
项
module.exports = {
parserOptions: {
parser:'babel-eslint',
},
extends: ['airbnb', 'prettier', 'plugin:vue/recommended'],
...
settings: {
polyfills: ['wasm', 'promises'],
'import/resolver': {
webpack: {
config: 'build/webpack.base.conf.js'
}
}
}
};
vs code支持vue
语法检测,自定义用户设置
"eslint.validate": [
"javascript",
"javascriptreact",
{ "language": "vue", "autoFix": true }
]
Unknown option “*.js” with value [‘eslint —cache —format=pretty’, ‘git add’] was found in the config root
如下,问题在ignore
配置错误,删除ignore
项后解决
"lint-staged": {
"*.js": [
"eslint --cache --format=pretty",
"prettier --ignore-path .eslintignore --single-quote --write",
"git add"
],
"ignore": [
"**/dist/*.js"
]
}
$ git commit -m 'test husky'
husky > pre-commit (node v10.14.2)
● Validation Warning:
Unknown option "*.js" with value ['eslint --cache --format=pretty', 'git add'] was found in the config root.
You are probably trying to mix simple and advanced config formats. Adding
"linters": {
"*.js": ["eslint --cache --format=pretty","git add"]
}
will fix it and remove this message.
Please refer to https://github.com/okonet/lint-staged#configuration for more information...
husky > commit-msg (node v10.14.2)
'commitlint' ▒▒▒▒▒ڲ▒▒▒▒ⲿ▒▒▒Ҳ▒▒▒ǿ▒▒▒▒еij▒▒▒
▒▒▒▒▒▒▒▒▒ļ▒▒▒
husky > commit-msg hook failed (add --no-verify to bypass)
eslint —cache —format=pretty found some errors. Please fix them and try committing again.
.eslintrc
文件里配置flow-type
静态类型检查,安装eslint-plugin-flowtype
后解决(或删除.eslintrc里的配置),文章最后有.eslintrc
最终配置
$ git commit -m 'test husky'
husky > pre-commit (node v10.14.2)
Stashing changes... [started]
Stashing changes... [completed]
Running linters... [started]
Running tasks for *.js [started]
eslint --cache --format=pretty [started]
eslint --cache --format=pretty [failed]
→
Running tasks for *.js [failed]
→
Running linters... [failed]
Updating stash... [started]
Updating stash... [skipped]
→ Skipping stash update since some tasks exited with errors
Restoring local changes... [started]
Restoring local changes... [completed]
× eslint --cache --format=pretty found some errors. Please fix them and try committing again.
Oops! Something went wrong! :(
ESLint: 5.11.0.
ESLint couldn't find the plugin "eslint-plugin-flowtype". This can happen for a couple different reasons:
1. If ESLint is installed globally, then make sure eslint-plugin-flowtype is also installed globally. A globally-installed ESLint cannot find a locally-installed plugin.
2. If ESLint is installed locally, then it's likely that the plugin isn't installed correctly. Try reinstalling by running the following:
npm i eslint-plugin-flowtype@latest --save-dev
Path to ESLint package: D:\project\ue_qianduan_git\imqianduan
ode_modules\eslint
If you still can't figure out the problem, please stop by https://gitter.im/eslint/eslint to chat with the team.
husky > pre-commit hook failed (add --no-verify to bypass)
husky > commit-msg hook failed (add —no-verify to bypass)
从husky的github上复制了一个commit-msg
hooks过来,没必要,删除后解决
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
$ git commit -m 'test husky'
husky > pre-commit (node v10.14.2)
Stashing changes... [started]
Stashing changes... [skipped]
→ No partially staged files found...
Running linters... [started]
Running tasks for *.js [started]
Running tasks for *.js [skipped]
→ No staged files match *.js
Running linters... [completed]
husky > commit-msg (node v10.14.2)
'commitlint' ▒▒▒▒▒ڲ▒▒▒▒ⲿ▒▒▒Ҳ▒▒▒ǿ▒▒▒▒еij▒▒▒
▒▒▒▒▒▒▒▒▒ļ▒▒▒
husky > commit-msg hook failed (add --no-verify to bypass)
stylelint could not be found. Try
npm install stylelint
安装stylelint
解决
$ git commit -m 'test husky css'
husky > pre-commit (node v10.14.2)
Stashing changes... [started]
Stashing changes... [skipped]
→ No partially staged files found...
Running linters... [started]
Running tasks for *.js [started]
Running tasks for {*.json,.{eslintrc,prettierrc,stylelintrc}} [started]
Running tasks for *.{css,scss} [started]
Running tasks for *.js [skipped]
→ No staged files match *.js
Running tasks for {*.json,.{eslintrc,prettierrc,stylelintrc}} [skipped]
→ No staged files match {*.json,.{eslintrc,prettierrc,stylelintrc}}
Running tasks for *.{css,scss} [failed]
→ stylelint could not be found. Try `npm install stylelint`.
Running linters... [failed]
stylelint could not be found. Try `npm install stylelint`.
husky > pre-commit hook failed (add --no-verify to bypass)
{
"parser": "babel-eslint",
"parserOptions": {
"sourceType": "module",
"allowImportExportEverywhere": true
},
"extends": ["airbnb", "prettier"],
"env": {
"browser": true,
"node": true
},
"rules": {
"arrow-parens": ["off"],
"compat/compat": "error",
"consistent-return": "off",
"comma-dangle": "off",
"generator-star-spacing": "off",
"import/no-unresolved": "error",
"import/no-extraneous-dependencies": "off",
"jsx-a11y/anchor-is-valid": "off",
"no-console": "off",
"no-use-before-define": "off",
"no-unused-vars": "off",
"no-multi-assign": "off",
"promise/param-names": "error",
"promise/always-return": "error",
"promise/catch-or-return": "error",
"promise/no-native": "off",
"prefer-destructuring": "off",
"no-lonely-if": "off"
},
"plugins": ["import", "promise", "compat"]
}
{
"overrides": [
{
"files": [".prettierrc", ".babelrc", ".eslintrc", ".stylelintrc"],
"options": {
"parser": "json"
}
}
],
"singleQuote": true,
"tabWidth": 4
}
{
"extends": ["stylelint-config-standard", "stylelint-config-prettier"]
}
使用husky设置代码格式检查,使得团队代码规范能保持一致,便于合并代码、代码review,减少出错等等。
macbook单独设置鼠标和触控面板的滚动方向
MacBook安装 homebrew,最烦的会报Failed to connect to raw.githubusercontent.com port 443: Connection refused。然后就没然后了,可能会一直安装不成功
如何查看xshell保存的密码?
Unable to negotiate with 106.52.160.162 port 22: no matching host key type found. Their offer: ssh-rsa fatal: Could not read from remote repository.
500 Internal Privoxy Error Privoxy encountered an error while processing your request: Could not load template file forwarding-failed or one of its included components. Please contact your proxy administrator. If you are the proxy administrator, please put the required file(s)in the (confdir)/templates directory. The location of the (confdir) directory is specified in the main Privoxy config file. (It's typically the Privoxy install directory).
nps是什么?nps局域网(内网)穿透怎么配置?nps的客户端,服务端怎么玩?
公司配置了两个屏幕,我想两个屏幕同时使用vscode打开同一个项目,正常来说vscode是不能这样操作的,怎么办呢?使用workspace
关于IDEA中文乱码的解决方法
无法加载以下来源的扩展程序
使用git hooks(post-receive)实现简单的远程自动部署
linux下,设置git免密码操作
做跨平台开发移植的时候,最常见的问题就是不同操作系统的换行不同(例如,Windows 上是 CRLF,而 Linux 上是 LF,MacOS 以前是 CR,现在也是 LF),如果不注意的话,可能会导致编译的时候报诡异的错误,虽然说有些优秀的文本工具(notepad++, vscode 等)可以自动转换,但是它们都没有提供批量转换的方法,所以一旦遇到有成百上千个的文件需要转换,那么一个个手动去转明显效率低下。虽然网上提到批量转换的文章很多,但是感觉都没有介绍清楚,可能大神们都觉得太简单了吧。。。为了同学们能够和我一样少走弯路,我就把我的转换过程详细记录下来。
源文件名长度大于文件系统支持的长度。请尝试将其移动到具有较短路径名称的位置,或者在执行此操作前尝试将其重命名为较短的名称
vscode插件开发过程
第一输入延迟(FID)测量用户首次与您的站点交互时的时间(即,当他们单击链接,点击按钮或使用自定义的JavaScript驱动控件时)到浏览器实际能够的时间回应这种互动。
推荐一些vs code开发中,非常实用的插件
浏览器、操作系统、分辨率等使用份额~
是不是觉得用手机调试app h5页面很麻烦?是不是不方便抓APP的包?在电脑上可以抓吗,可以,用mumu+fiddler就走向人生巅峰了。。。
eslint使用注意事项
eslint环境变量设置
nvm是node安装及版本管理工具
**git cherry-pick**可以选择某一个分支中的一个或几个commit(s)来进行操作。例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0中的功能到v2.0中,这里就可以使用cherry-pick了,其实也就是对已经存在的commit 进行再次提交.
在使用Git的过程中,有时候会因为一些误操作,比如reset、rebase、merge等。特别是在Commit之后又执行了`git reset --hard HEAD`强制回滚本地记录以及文件到服务器版本,导致本地做的修改全部恢复到Git当前分支的服务器版本,同时自己的Commmit记录也消失了。碰到这种情况,不要慌,我们在Git上做的任何操作都只是在原来之前的操作上做修改,并且会被记录下来保存,也就是说无论你做了什么,对于Git来说都可以进行回滚操作。
该规则禁止词法声明(`let`,`const`,`function`和`class`在)`case/ default`条款。原因是词法声明在整个开关块中是可见的,但只有在分配时才会被初始化,这只有在达到定义它的情况下才会发生。
如果您希望通过启用环境来允许一组全局变量,但仍希望禁止其中某些变量,则禁止使用特定的全局变量非常有用。 例如,早期的Internet Explorer版本将当前的DOM事件暴露为全局变量 event,但是长期以来,使用此变量一直被认为是一种不好的做法。限制此操作将确保在浏览器代码中不使用此变量。
它的原理很简单,就是将代码提交的历史,按照两分法不断缩小定位。所谓"两分法",就是将代码历史一分为二,确定问题出在前半部分,还是后半部分,不断执行这个过程,直到范围缩小到某一次代码提交。
当在git操作log,如`git log`后,然后非正常退出,即使用`CTRL+C`退出,这个时候git输入命令就不会显示了,只有光标,这时怎么办?
.gitignore文件配置不生效
团队成员多,虽然制定了代码规范,但也不一定能执行的起来,时间一长,各自的代码规范可能又会有出入了。husky解决了这个问题,让代码检查自动化,流程化,如果不符合规范,则不能commit
当我们在开发前端项目的时候, 很多时候需要根据后端返回的数据来渲染页面, 我们通常使用AJAX发送请求给服务端。当我们开发后端逻辑的时候有时候需要连接数据库,根据从数据库中得到的数据来执行后续的逻辑代码, 或者其他的依赖, 甚至会更加复杂棘手。这些开发都存在一个共同的局限性, 就是会去依赖别的服务, 需要别的系统的支持。 例如, 如果我们使用Ajax请求网络, 您需要有一个服务器来响应对应的请求。对于数据库, 您需要有一个为测试设置的测试数据库
项目目录树是如何做的?手动写吗,不可能的,很简单就是使用tree命令
git修改当前项目用户
Git修改最近一次已经提交了的commit及push
git常用命令,git查看某个文件的修改记录,分支备注
ESlint报错:Expected indentation of 16 spaces but found 20,Expected indentation of 12 spaces but found 16.
eslist报错: Unexpected token ...
通过设置git-diff driver,结合.gitattributes文件,使git diff命令忽略某些目录。例如我们只希望看到比较src目录,不希望看到比较dist目录
学习这本书的目的是让你了解版本控制,并且尽可能快速简单的掌握 Git。但是和另外一些关于介绍版本控制的图书不一样,阅读这本书并不需要你有很专业的 IT 或者电脑背景知识,它也面向那些编程的初学者,软件构架师,或者是项目经理。在技术方面你也不需要有很多专业知识,我们会以循序渐进的方式帮助你来理解版本控制和掌握 Git。
git如何打包增量文件?
github push时免密码
用了很多图片压缩工具,Image Optimizer5.0图片压缩工具,个人觉得是非常不错的,特别是对JPG图片的压缩,真正能达到不改变图片质量,图片大小压缩达到50%以上。图片压缩能达到50%以上,这对网站性能是很大的提升的。