今天在搞 markdown 编辑器 app 时发现项目 tsc 报错,通过报错发现是由于 tsc 检查到了 npm 包内部,且我的项目都 tsconfig 比 npm 包的 tsconfig 更加严格所导致的。

通常如果 tsc 检查到了 npm 包的话,只要 tsconfig 内设置 exclude 或者 compilerOptions.skipLibCheck 即可跳过对 npm 包的检查,不过我发现这两个属性我加了也没用。

多翻尝试以后,记得之前自己写 npm 包时用 src 源文件作为 types 时也出现过同样的问题。当时由于看 rxjs 点击函数可以直接跳转到源文件,所以我当时用 src 内部的 ts 源文件作为类型声明文件,而不用把 types 打包出来,结果就会导致使用时 tsc 会检查到 npm 包内部。大部分比较出名的 npm 包都不会用源文件作为 types。

其实 rxjs 的 npm 包也有 src 目录,不过不是作为 types,而是编译 types 时同时编译了 ts 的 sourcemap 才会支持跳转源码。

既然找到问题了,那么直接给库提个 issue 就好了,然后涉及到的文件入口(项目文件非 npm 包文件)先在 tsconfig 里排除出去,如果库作者改了再把该文件检查回来即可。

评论

0 / 800
全部评论()