qua*_*ddy 9 configuration node.js typescript tsconfig visual-studio-code
我想在 Node.js TypeScript 项目中禁用 DOM 类型定义。我已经使用下面代码片段中显示的配置配置了 TypeScript。尽管明确将该"lib"属性设置为["ES2016"],VS Code 仍然建议lib.dom.d.ts自动完成。lib.dom.d.ts该项目似乎从驻留在 VS Code 中的定义文件(特别是~/.vscode/extensions目录,而不是目录)中提取定义。node_modules最终结果似乎是运行时错误。显然 Node.js 对 DOM 库没有用处;是有一些方法可以禁用 DOM 库吗?
使用下面的配置(如上所述)不起作用。
{
"compilerOptions": {
"lib": ["ES2016"],
"target": "es6",
"module": "commonjs",
"skipLibCheck": true,
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"allowJs": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"inlineSourceMap": true,
"importHelpers": true,
"alwaysStrict": true,
"strict": true,
"outDir": "build",
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"typeRoots": ["./node_modules/@types", "./typings"],
"baseUrl": ".",
"paths": {
"#root/*": ["./*"]
}
},
"include": [
"src/**/*",
"__tests__/**/*",
"config/**/*",
"scripts/bundle-test.ts"
],
"exclude": ["node_modules"]
}
Run Code Online (Sandbox Code Playgroud)
不可能告诉您如何以指定要排除的库的方式配置项目。这是因为 TypeScript 在其文件中不支持任何此类机制tsconfig.json。要知道如何不包含 DOM,您需要知道如何配置您的项目以使用(而不是使用)ECMAScript 库和标准。
在定义要包含在架构定义tsconfig.json文件中的 ECMAScript 库时,您需要考虑两个设置。
"noLib": string[],"lib": string[],noLib很少需要设置为 true。使用(或设置为 true)时,项目不会自动导入库,许多库您必须导入您想要使用的每个库以及这些库的类型定义。现在,这可以用来定义您想要的所有内容,并忽略您不需要的所有内容,例如 DOM 库。
Lib会是更实用的财产Lib通过定义您希望能够使用的 ECMAScript 库来工作。
\n\n“这个问题是特定于 Node.js 的,因此,我会这样回答它”通常,使用 Node.js,您可以设置
\nlib为任何最新版本的ECMA-262 标准(又名 ECMAScript)并且没问题。对于在浏览器中运行的 JavaScript 来说情况并非如此。使用 Node.js,您可以获得一个受控的运行时环境,仅由具有编程经验的人员使用。浏览器,嗯,你得到了各行各业,以及在 VT 终端中执行你的代码的用户(好吧,也许不是真正的 VT,但你明白我的意思)。
tsconfig.json "lib": []下面按年龄顺序列出了您可以指定为属性值的 ECMAScript 标准(最旧的 --> 最新的)。noLib。由于我花时间编译了这个列表,我想我也可以将它提供给 noLib。正如我在上面向您透露的,该tsconfig.json属性noLib意味着您不希望任何版本的 ECMA-262 标准包含任何库,并且您自己想要单独定义将包含哪些库(此也意味着你需要提供类型信息(获取类型见下文),下面是你可以一一定义的库。
noLibECMA 功能支持来定义项目是不可避免的。您必须煞费苦心地列出每个功能、用于该功能的标准化,并且必须包含并正确配置您添加的每个功能的类型。lib“当 noLib 设置为true”时,将添加以下库。使用下面的库是具体说明您使用的库的唯一方法。即使如此,您仍然没有指定不使用什么。所以你不能使用这个方法来专门“NOT USE DOM”。
\n