我们推荐在团队中使用统一的 Lint 规范和 commit 约束项目进行规范开发, Lint 可以根据现在团队中的使用情况
推荐 airbnb javascript style guid: https://github.com/airbnb/javascript
TS 代码规范
{// - Enforces function overloads to be consecutive. -adjacent-overload-signatures: true,// - 禁止逗号运算符。 -ban-comma-operator:true,// - 禁止类型 -ban-type: [true, ["object","User {} instead."],["string"]],// - 类成员必须声明 private public ...member-access: [true , "no-public"||"check-accessor"|| "check-constructor" || "check-parameter-property" ],// - 类声明排序 -member-order: [true, {order:....}],// - 不需使用any类型 -no-any: true,// - 禁止空接口 -no-empty-interface:true,// - 禁止导入带有副作用的语句no-import-side-effect: [true, {"ignore-module": "(\\.html|\\.css)$"}],// - 不允许将变量或参数初始化为数字,字符串或布尔值的显式类型声明。 -no-inferrable-types: [true, "ignore-params", "ignore-properties"],// - 不允许内部模块no-internal-module:true,// - 不允许在变量赋值之外使用常量数值。当没有指定允许值列表时,默认允许-1,0和1no-magic-numbers: [true,1,2,3],// - 不允许使用内部modules和命名空间no-namespace: [ true,"allpw-declarations"],// - 不允许使用!后缀操作符的非空断言。no-non-null-assertion: true ,// - 不允许重新分配参数no-parameter-reassignment: true,// - 禁止使用/// <reference path=> 导入 ,使用import代替no-reference: true,// - 如果类型断言没有改变表达式的类型就发出警告no-unnecessary-type-assertion: true,no-var-requires: true, //不允许使用var module = require("module"),用 import foo = require('foo')导入only-arrow-functions: [true,"allow-declarations","allow-named-functions"], //允许箭头表达式,不需要传统表达式 ; 允许独立的函数声明 ;允许表达,function foo() {}但不是function() {}prefer-for-of:true, //建议使用for(..of)promise-function-async: true, 要求异步函数返回promisetypedef: [true, "call-signature", "parameter", "member-variable-declaration"], //需要定义的类型存在typedef-whitespace: true, //类型声明的冒号之前是否需要空格unified-signatures: true, //重载可以被统一联合成一个//function 专用await-promise: true, //警告不是一个promise的awaitban: [true,"eval",{"name": "$", "message": "please don't"},["describe", "only"],{"name": ["it", "only"], "message": "don't focus tests"},{"name": ["chai", "assert", "equal"],"message": "Use 'strictEqual' instead."},{"name": ["*", "forEach"], "message": "Use a regular for loop instead."}],curly: true, //for if do while 要有括号forin:true, //用for in 必须用if进行过滤import-blacklist:true, //允许使用import require导入具体的模块label-postion: true, //允许在do/for/while/swith中使用labelno-arg:true, //不允许使用 argument.calleeno-bitwise:true, //不允许使用按位运算符no-conditional-assignmen: true, //不允许在do-while/for/if/while判断语句中使用赋值语句no-console: true, //不能使用consoleno-construct: true, //不允许使用 String/Number/Boolean的构造函数no-debugger: true, //不允许使用debuggerno-duplicate-super: true, //构造函数两次用super会发出警告no-empty:true, //不允许空的块no-eval: true, //不允许使用evalno-floating-promises: true, //必须正确处理promise的返回函数no-for-in-array: true, //不允许使用for in 遍历数组no-implicit-dependencies: true, //不允许在项目的package.json中导入未列为依赖项的模块no-inferred-empty-object-type: true, //不允许在函数和构造函数中使用{}的类型推断no-invalid-template-strings: true, //警告在非模板字符中使用${no-invalid-this: true, //不允许在非class中使用 this关键字no-misused-new: true, //禁止定义构造函数或new classno-null-keyword: true, //不允许使用null关键字no-object-literal-type-assertion: true, //禁止objext出现在类型断言表达式中no-return-await: true, //不允许return awaitarrow-parens: true, //箭头函数定义的参数需要括号"quotemark":[true, "single","avoid-escape"], //引号的使用规则"semicolon":[true, "never", "ignore-interfaces"], //分号的使用规则"indent":[true, "tabs", 2], //使用Tab进行缩进,每次强制缩进2个字符"typedef-whitespace": false, //在类型定义的时候,是否允许使用空格, 使用false,表示不对此项进行校验,不启用此项的校验"whitespace": false, //空格的校验"member-access": false, //类成员的显示可见性声明,即显示定义一个类的成员是否可见,即对类成员定义public | static 等"one-line": false, //要求指定的标记与它们之前的表达式位于同一行"trailing-comma": [true, { //对尾随逗号的校验"multiline": {"objects": "ignore","arrays": "never","functions": "never","typeLiterals": "ignore"},"esSpecCompliant": true //是否允许尾随逗号出现在剩余变量中}]}
CSS 代码规范

Those layers are:
- Settings – used with preprocessors and contain font, colors definitions, etc.
- Tools – globally used mixins and functions. It’s important not to output any CSS in the first 2 layers.
- Generic – reset and/or normalize styles, box-sizing definition, etc. This is the first layer which generates actual CSS.
- Elements – styling for bare HTML elements (like H1, A, etc.). These come with default styling from the browser so we can redefine them here.
- Objects – class-based selectors which define undecorated design patterns, for example the media object known from OOCSS
- Components – specific UI components. This is where most of our work takes place. We often compose UI components of Objects and Components**
- Utilities – utilities and helper classes with ability to override anything which goes before in the triangle, e.g. hide helper class
.declaration-order {display: block;float: right;position: absolute;top: 0;right: 0;bottom: 0;left: 0;z-index: 100;border: 1px solid #e5e5e5;border-radius: 3px;width: 100px;height: 100px;font: normal 13px "Helvetica Neue", sans-serif;line-height: 1.5;text-align: center;color: #333;background-color: #f5f5f5;opacity: 1;}// 下面是推荐的属性的顺序[["display","visibility","float","clear","overflow","overflow-x","overflow-y","clip","zoom"],["table-layout","empty-cells","caption-side","border-spacing","border-collapse","list-style","list-style-position","list-style-type","list-style-image"],["-webkit-box-orient","-webkit-box-direction","-webkit-box-decoration-break","-webkit-box-pack","-webkit-box-align","-webkit-box-flex"],["position","top","right","bottom","left","z-index"],["margin","margin-top","margin-right","margin-bottom","margin-left","-webkit-box-sizing","-moz-box-sizing","box-sizing","border","border-width","border-style","border-color","border-top","border-top-width","border-top-style","border-top-color","border-right","border-right-width","border-right-style","border-right-color","border-bottom","border-bottom-width","border-bottom-style","border-bottom-color","border-left","border-left-width","border-left-style","border-left-color","-webkit-border-radius","-moz-border-radius","border-radius","-webkit-border-top-left-radius","-moz-border-radius-topleft","border-top-left-radius","-webkit-border-top-right-radius","-moz-border-radius-topright","border-top-right-radius","-webkit-border-bottom-right-radius","-moz-border-radius-bottomright","border-bottom-right-radius","-webkit-border-bottom-left-radius","-moz-border-radius-bottomleft","border-bottom-left-radius","-webkit-border-image","-moz-border-image","-o-border-image","border-image","-webkit-border-image-source","-moz-border-image-source","-o-border-image-source","border-image-source","-webkit-border-image-slice","-moz-border-image-slice","-o-border-image-slice","border-image-slice","-webkit-border-image-width","-moz-border-image-width","-o-border-image-width","border-image-width","-webkit-border-image-outset","-moz-border-image-outset","-o-border-image-outset","border-image-outset","-webkit-border-image-repeat","-moz-border-image-repeat","-o-border-image-repeat","border-image-repeat","padding","padding-top","padding-right","padding-bottom","padding-left","width","min-width","max-width","height","min-height","max-height"],["font","font-family","font-size","font-weight","font-style","font-variant","font-size-adjust","font-stretch","font-effect","font-emphasize","font-emphasize-position","font-emphasize-style","font-smooth","line-height","text-align","-webkit-text-align-last","-moz-text-align-last","-ms-text-align-last","text-align-last","vertical-align","white-space","text-decoration","text-emphasis","text-emphasis-color","text-emphasis-style","text-emphasis-position","text-indent","-ms-text-justify","text-justify","letter-spacing","word-spacing","-ms-writing-mode","text-outline","text-transform","text-wrap","-ms-text-overflow","text-overflow","text-overflow-ellipsis","text-overflow-mode","-ms-word-wrap","word-wrap","-ms-word-break","word-break"],["color","background","filter:progid:DXImageTransform.Microsoft.AlphaImageLoader","background-color","background-image","background-repeat","background-attachment","background-position","-ms-background-position-x","background-position-x","-ms-background-position-y","background-position-y","-webkit-background-clip","-moz-background-clip","background-clip","background-origin","-webkit-background-size","-moz-background-size","-o-background-size","background-size"],["outline","outline-width","outline-style","outline-color","outline-offset","opacity","filter:progid:DXImageTransform.Microsoft.Alpha(Opacity","-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha","-ms-interpolation-mode","-webkit-box-shadow","-moz-box-shadow","box-shadow","filter:progid:DXImageTransform.Microsoft.gradient","-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient","text-shadow"],["-webkit-transition","-moz-transition","-ms-transition","-o-transition","transition","-webkit-transition-delay","-moz-transition-delay","-ms-transition-delay","-o-transition-delay","transition-delay","-webkit-transition-timing-function","-moz-transition-timing-function","-ms-transition-timing-function","-o-transition-timing-function","transition-timing-function","-webkit-transition-duration","-moz-transition-duration","-ms-transition-duration","-o-transition-duration","transition-duration","-webkit-transition-property","-moz-transition-property","-ms-transition-property","-o-transition-property","transition-property","-webkit-transform","-moz-transform","-ms-transform","-o-transform","transform","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","-o-transform-origin","transform-origin","-webkit-animation","-moz-animation","-ms-animation","-o-animation","animation","-webkit-animation-name","-moz-animation-name","-ms-animation-name","-o-animation-name","animation-name","-webkit-animation-duration","-moz-animation-duration","-ms-animation-duration","-o-animation-duration","animation-duration","-webkit-animation-play-state","-moz-animation-play-state","-ms-animation-play-state","-o-animation-play-state","animation-play-state","-webkit-animation-timing-function","-moz-animation-timing-function","-ms-animation-timing-function","-o-animation-timing-function","animation-timing-function","-webkit-animation-delay","-moz-animation-delay","-ms-animation-delay","-o-animation-delay","animation-delay","-webkit-animation-iteration-count","-moz-animation-iteration-count","-ms-animation-iteration-count","-o-animation-iteration-count","animation-iteration-count","-webkit-animation-direction","-moz-animation-direction","-ms-animation-direction","-o-animation-direction","animation-direction"],["content","quotes","counter-reset","counter-increment","resize","cursor","-webkit-user-select","-moz-user-select","-ms-user-select","user-select","nav-index","nav-up","nav-right","nav-down","nav-left","-moz-tab-size","-o-tab-size","tab-size","-webkit-hyphens","-moz-hyphens","hyphens","pointer-events"]]
