typescript - 为什么我的 outDir 包含一个(大部分重复的)src 目录?
问题描述
当我的项目转译时,我得到一个这样的结构,其中 src\index.ts 被转译成 lib\index.js 和 lib\src\index.js。但 lib\index.js 似乎并未更新所有更改。这是为什么?为什么还有2份?
+---functions
| | .gitignore
| | config.json
| | package-lock.json
| | package.json
| | tsconfig.json
| | tslint.json
| |
| +---lib
| | | index.js
| | | index.js.map
| | |
| | \---src
| | index.js *this one seems to be getting compiled*
| | index.js.map
| \---src
| index.ts
我的 tsconfig
{
"compilerOptions": {
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true,
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "es2017",
"resolveJsonModule": true,
"esModuleInterop": true,
},
"compileOnSave": true,
"include": [
"src"
]
}
解决方案
lib\src\index.js
很可能是您之前构建的一个过时的输出编译,您还尝试从src
. rootDir
原因是TypeScript编译器选项中的隐式设置。
根目录
rootDir
outDir
与选项一起控制输出目录结构相关。如果您没有明确设置它,它将被计算为所有输入文件的公共根目录 - 包括您导入的模块。当编译器编写输出时,它会像这样确定每个输入文件的输出位置:从输入文件路径中剥离rootDir
并添加到它的前面outDir
。
例子
您的项目根目录是functions
目录。您从 导入所有内容functions/src
,但也导入一个模块functions/foo.ts
(假设没有rootDir
设置)。然后:
rootDir
设置为functions
,而不是functions/src
- 的输出位置
functions/src/index.ts
是:- 脱掉
functions
=functions/src/index.ts
>src/index.ts
- 前置
functions/lib
=>functions/lib/src/index.ts
- 脱掉
你去了: index.ts 的输出将是functions/lib/src/index.js
. 如果您想阻止这种情况,请rootDir
明确设置为src
(相对于 tsconfig.json 的路径)。如果不是所有的输入都在这个文件夹下,TypeScript 会抱怨!
希望,这有帮助。
推荐阅读
- grpc - 将类传递给 gRPC (proto3) 中的 RPC
- cors - Laravel 7 Passport:被 CORS 策略阻止
- r - R 等效于 Scikit-Learn make_regression() 函数
- c++ - 为什么简单的迭代器不可读?
- javascript - 当使用 Context API 仅调用其中一个对象时,设置状态会更新这两个对象。反应
- amazon-web-services - 收到以下 IAM 策略的错误“此策略包含以下错误:缺少必填字段效果”
- android - 如何在android中以编程方式启用屏幕旋转?
- c# - 奇怪的 asp.net MVC System.OutOfMemoryException :(
- c# - 具有序列化派生类能力的基类
- wso2 - wso2 IS 作为 KM 不能使用 SCIM