条形字体配置
这个软件包为Canonical的TypeScript项目提供了中央配置.
反应项目见 反应配置。 。 。 .
开始
- 安装打字符 :
bun add -d typescript - 安装此配置 :
bun add -d @canonical/typescript-config - 创建一个
tsconfig.json在您的工程根中存档,并扩展此配置.
{
"extends": "@canonical/typescript-config"
}
配置
此配置允许以下行为 :
ES2023图书馆 包含:ES2023typeScript 项目的库.NodeNext模块:为节点项目提供模块解析,同时提供CJS和无害环境管理支持.- 明确导入文件扩展名( 例如 ),
./Button/index.js改为./Button) (中文(简体) ).
- 明确导入文件扩展名( 例如 ),
ES2023目标:ES2023ECMAScript版本. 出自现代JavaScript语法,省去遗留变换和多填充.- 严格模式: 启用严格类型检查和若干其他严格性设置.
历史
此配置根植于 Canonical React 组件打字符配置。 。 。 . 它被普遍用于支持非反应性项目,并且更低等.
以下选项已经从原始配置中更改:
"module": "esnext"→"module": "NodeNext":为了更严格的节点相容输出和模块分辨率,提高导入语法的一致性,并改进无害环境管理/CJS的互操作性."target": "es6"→"target": "ES2023""lib": ["dom", "dom.iterable", "esnext"]→"lib": ["ES2023"](单位:千美元)DOM如果浏览器项目需要,可以手动添加)"strict": false→"strict": true"noUnusedParameters": true+ 按严格模式抵消"noUnusedLocals": true+ 按严格模式抵消"noImplicitReturns": true+ 按严格模式抵消"noFallthroughCasesInSwitch": true+ 按严格模式抵消"skipLibCheck": true− 无法进行更严格的依赖类型检查"esModuleInterop": true• 由"module": "NodeNext",将节点配置与无害环境管理互操作性相结合"allowSyntheticDefaultImports": true• 禁用更严格的进口检查
洞穴
NodeNext 文选. Node 模块分辨率
在使用TypeScript的NodeNext模块分辨率时,TypeScript期望文件遵循Node.js的ES模块(ESM)分辨率规则,这需要明确的.js扩展来进行导入. 这一方法与无害环境管理公约相匹配,其中必须具体说明索引.js文件。 这与节点模块分辨率不同,该模块默认为CommonJS,允许目录导入而无需指定索引文件. 最佳做法:
Use Explicit File Extensions: With NodeNext, include file extensions (e.g., ./Button/index.js).
Maintain an index.ts for Exports: Collect all exports in a single index.ts at the package root for easier imports.
Consider the Module Type: Use Node resolution if CommonJS is preferred; otherwise, NodeNext for ESM compliance.
这种方法与Node.js和捆绑机都保持相容性.
换句话说,通过使用NodeNext,我们的目标是与ES模块规格相兼容,这需要明确导入 mymodule/index.js 文件而不是简单的 mymodule/。 。 。 .