我有一个正在维护的图书馆的新工作区。我们在Angular 5中使用了2个自定义的TSLint规则,它们没有利用Angular CLI。现在,我们将转向Angular CLI和Angular 7。
我们正在做的一件事是在TSLint拿起它们之前,不需要将这些TSLint规则编译为JS。但是,这要求ts-node
在我们的package.json
的Lint脚本中使用。
如何告诉ng
提取这些TypeScript TSLint规则文件?
tsconfig.json
(在projects/my-lib/src
中)
{
"rulesDirectory": "./lib/tslint-rules"
}
然后,在主工作区中,我们从库中扩展此tsconfig
并添加我们的自定义规则。
Could not find implementations for the following rules specified in the configuration:
my-custom-tslint-rule
Try upgrading TSLint and/or ensuring that you have all necessary custom rules installed.
If TSLint was recently upgraded, you may have old rules configured which need to be cleaned up.
答案 0 :(得分:0)
好,所以我知道了。如果要在Angular库中包含自定义TSLint规则,则需要做一些事情。
确保已将它们导出到您的public_api.ts
中。这样可以确保在运行ng build <library-name>
时,TypeScript编译器将拾取这些文件并进行编译,然后将它们放在dist
文件夹中。
将tsconfig.lib.json
配置为使用非es6 / es2015模块。这就是给我造成很多问题的原因。 TSLint似乎不支持es2015样式模块。我已将其切换为使用umd
。 (我还注意到commonjs
也很好。)
{
"compilerOptions": {
...
"module": "umd",
}
}
tslint.json
并将已安装的node_modules tslint规则添加到您的tslint.json
中。然后,将您的特定规则添加到规则列表中。 "rulesDirectory": [
// ...,
"node_modules/<my-package>/esm2015/lib/tslint-rules"
],
然后,添加如下配置的规则:
"rules": {
// ...,
"my-custom-rule": true,
// ...
}
tslint-default.json
,然后在运行ng build
之后将其复制到dist文件夹中。这应该添加了规则目录和自定义规则的默认设置。 然后,当您将该软件包安装到其他地方时,只需要从已安装的node_modules文件夹中扩展此tslint-default.json
。
希望这对尝试构建Angular库并包含自定义TSLint规则的人有所帮助。