2016-09-21 150 views
2

我想介绍一个可以跨多个项目共享的打字稿编码指南。我不想复制粘贴tslint.json多次,它已经发生了,我们有它的分歧版本。如何创建我的自定义tslint规则集?

我想根据我的指南tslint:recommended。我看到tslint语法允许使用extend,但我不清楚它的用法以及如何构建这样的包。

这样的项目本身可能只包含一个tslint.json本身,还是我需要导出一个模块?

我想要包然后托管在npm/sinopia实例上,但我不确定如何继续。

回答

5

是的。您可以创建一个包含规则集的NPM模块,并可以通过tslint.json文件的extends设置来引用该模块。

例如,您可以创建一个名为my-rule-set的NPM模块与此package.json

{ 
    "name": "my-rule-set", 
    "version": "0.0.0", 
    "main": "my-rule-set.json" 
} 

my-rule-set.json(注意在package.json引用mainmy-rule-set.json文件):

{ 
    "extends": "tslint:recommended", 
    "rules": 
    { 
     ... 
    } 
} 

然后,在node_modules中安装my-rule-set,您可以使用自己的规则集扩展tslint.json文件:

{ 
    "extends": "my-rule-set" 
} 

this TSLint blog post有关于可共享配置的更多信息。

如果您的规则集仅包含现有规则的配置,那就是您所需要做的。但是,如果您打算实施一些自定义规则,请在my-rule-set.json中您需要链接到您的自定义规则所在的目录。例如,它也应该有这样的:"rulesDirectory": "./rules"。然后./rules目录应包含编辑的.js版本的规则。

+1

很好的答案,只需注意一点:在'my-rule-set.json'中,您需要链接到自定义规则所在的目录。例如,它也应该有这样的:'“rulesDirectory”:“./rules”'。那么'。/ rules'目录应该包含规则的_compiled_'.js'版本。 (如果您想要@cartant,请随意将其编辑为您的答案) – JKillian

+0

@JKillian您可以将其作为自己的答案发布,或者如果您认为更改足够小,请自行编辑此答案。 – k0pernikus

+0

更新了包含'rulesDirectory'评论的答案。 (感谢您在TSLint上的工作,@JKillian,这是一个有用的工具。) – cartant