我正在创建一个npm软件包,并具有类似于下面的文件夹结构:
project/
- src/
- index.tsx
- package.json
- config/
- tsconfig.json
- copy/
- tsconfig.json
- package.json
- dist/
- index.js
- package.json
- config/
- tsconfig.json
- copy/
- tsconfig.json
- package.json
- tsconfig.json
- package.json
project/
是主要的开发文件夹。这就是提交给github的内容。
project/src/
包含所有源开发文件。所有JavaScript文件均以Typescript编码。
project/dist/
是发布到npm的分发文件夹,它只是project/src/
的编译版本。 .ts和.tsx文件被编译为.js / .jsx,而.json文件只是从project/src/
复制而没有任何更改。
project/src/config/
和project/dist/config/
包含此项目本身未使用的默认tsconfig.json文件。其目的是通过project/src/copy/
和project/dist/copy/
中的tsconfig.json文件扩展的。详情请见下文。
project/src/copy/
和project/dist/copy/
是一旦安装npm软件包(通过postinstall)将被复制到用户根目录的文件。这是因为我正在创建的包本质上是一个模板,因此一旦用户安装了该包,它将在根目录中包含一个默认的package.json
文件,该文件包含该文件的所有脚本,挂钩,包等。模板以及一个tsconfig.json
文件,无非是:
{
"extends": "./node_modules/myPackage/config/tsconfig.json"
}
这是在project/dist/config/tsconfig.json
中扩展tsconfig.json文件。
我扩展它而不是简单地在project/dist/config/tsconfig.json
的内容中进行编码的原因是,用户只需要运行npm update myPackage
,并且如果tsconfig.json文件已更改,他们将自动运行使用新的配置设置。
否则,如果我仅将project/dist/config/tsconfig.json
的内容复制到用户的根目录,则他们将无法获得更新的配置,因为postinstall
仅对npm update
不起作用{1}}。
我遇到的问题是我在npm install
和project/src/copy/tsconfig.json
中遇到类型错误,因为它所扩展的路径显然不存在。
我尝试将project/dist/copy/tsconfig.json
添加到"exclude": ["src/copy/tsconfig.json", "dist/copy/tsconfig.json"]
,但是它不起作用。这些文件中仍显示类型错误。
那么我如何让Typescript不报告这两个特定文件的错误?
编辑:这似乎是VSCode问题。如果我在CLI中运行project/tsconfig.json
,则它不会返回任何错误(我想是因为tsc
不会检查.json文件)。