hj-check-style
v3.0.1
Published
Import jshint and jscs test for your project.
Downloads
3
Readme
JavaScript 编码规范
每个人或者每个公司都应该有一个 JavaScript 的编码规范,而且这个规范一般是不会变的, 我们可以要求每人在项目目录或者个人目录下放上 .jshintrc 或 .jscsrc 或 .eslintrc, 但你不觉得这样很麻烦吗?
此工具是基于我的个人编码习惯,同时结合了公司(沪江)里的一些规范,将 jshint,
jscs, eslint 三者组装起来的一个工具,它不需要在项目下包含任何的相关
配置文件,只要运行一下 check-style
或缩写 cs
;就会自动检查 js 文件中不符合规范的地方。
另外,也可以检查 jsx 文件的编码风格!
对于其他想利用此工具的用户:
- 如果你的编码风格和下面说的一致的话,那么恭喜你,你直接全局安装此工具,直接使用就行。
- 如果你的编码风格和下面的不一样,那么建议你
fork
此项目,修改其中的规范, 然后换个名称发布你的项目,这样你也可以使用你自己风格的此工具了。 - 如果你嫌第 2 步太麻烦了,你可以执行
check-style write
将配置文件写入你的项目目录, 手动修改写入后的配置文件即可
灵感来自于 standard,只是它强制要求你使用它的规范,没有自定义的可能,当然也不支持 jsx 文件
使用
先全局安装
check-style
工具npm --global install check-style
在项目目录下运行以下命令:
自动检查项目目录下的所有 js 文件
cs # 或者使用长命令:check-style
也可以检查指定的 js 文件:
cs file1 file2
如果你是 jsx 文件,需要检查它的语法,可以这样用:
cs --jsx --ext jsx # 假设你的 jsx 文件是以 .jsx 为后缀命名的
如果想查看
.jscsrc
或.jshintrc
或.eslint
中某个字段的意思,直接运行:cs manual jscs disallowMultipleSpaces
更多命令用
cs -h
查看
jscs 相关规范
我推荐的规范
- 在语句中不允许连续的多个 空格 或 TAB(不包括 indent)
- 逗号不要写在每行的开始位置
- 语句后面需要写
;
- 函数参数之间要使用空格
- 三元操作符之间要使用空格
- for 循环参数中的分号后需要有空格
- 定义函数时的大括号前需要使用空格
"esnext": true,
"validateJSDoc": { "checkParamNames": true, "requireParamTypes": true },
"disallowMultipleSpaces": true,
"requireCommaBeforeLineBreak": true,
// "requireSemicolons": true, // jshint 中已经有此判断了
"requireSpaceBetweenArguments": true,
"validateParameterSeparator": ", ",
"requireSpacesInConditionalExpression": true,
"requireSpacesInForStatement": true,
"disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
"requireSpacesInFunction": { "beforeOpeningCurlyBrace": true },
// "requireYodaConditions": true,
"disallowKeywords": ["with", "eval"],
"disallowKeywordsOnNewLine": ["else"],
"disallowTrailingWhitespace": true,
"requireLineFeedAtFileEnd": true,
"requireCurlyBraces": ["try", "catch"],
空格
- 除括号外,所有运算符的前后都需要有空格
- 某些关键字之后需要有空格,包括
if
,else
,try
,finally
等 - block 语句块之前要有空格
- 行注释
//
后需要有空格 - 对象初始化(
{ ... }
)的每个属性名的:
后面要有空格 - 所有逗号
,
后, 但除了逗号在行尾的情况 - 单行的对象初始化(
{ ... }
),在{
后面和}
前面要有空格
"disallowSpaceBeforeBinaryOperators": [","],
"disallowSpaceAfterBinaryOperators": ["!"],
"requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
"requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
"requireSpaceBeforeBlockStatements": true,
"requireSpaceAfterKeywords": [
"do",
"for",
"if",
"else",
"switch",
"case",
"try",
"catch",
"finally",
"void",
"while",
"return",
"typeof",
"function"
],
"requireSpaceBeforeKeywords": ["else", "catch", "finally"],
"requireSpaceAfterLineComment": true,
"requireSpaceBeforeObjectValues": true,
对齐和缩进
- 必须采用 4 个空格,不得使用 TAB
- 未结束的语句在换行后必须多一次缩进
"validateIndentation": 4,
"disallowMixedSpacesAndTabs": true,
换行
if
,do
,for
,while
等关键字前- 运算符处换行时,运算符必须在新行的行首
"requireKeywordsOnNewLine": ["while", "do"],
"disallowOperatorBeforeLineBreak": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
"requireOperatorBeforeLineBreak": [","],
命名
- 构造函数首字母大写
"requireCapitalizedConstructors": true,