gpt4 book ai didi

typescript - 为基于 typescript 的库在 package.json 类型字段中放置什么

转载 作者:搜寻专家 更新时间:2023-10-30 20:34:19 26 4
gpt4 key购买 nike

对于如何最好地开发与代码导航并行的多个 typescript 模块并仍然以正确的方式发布,我有点困惑。那么我应该在 package.json 的“类型”字段中真正放入什么?

根据:Typescriptlang.org/publishing.html

我应该像这样引用我生成的 index.d.ts:

{
"name": "awesome",
"author": "Vandelay Industries",
"version": "1.0.0",
"main": "./lib/main.js",
"types": "./lib/main.d.ts"
}

如果我随后使用 npm link 并行开发一个依赖于这个模块的模块,例如 vscode 中的代码导航让我直接跳转到这个定义文件。这不是我想要的。

我想进入源文件以便能够在 dep 中并行编辑。在这方面,没有带有源映射的 tsconfig 设置,无论是否内联。我可能在这里遗漏了一些东西。我管理工作流程正常工作的唯一方法是实际指向源 main.ts 文件:

{
"name": "awesome",
"author": "Vandelay Industries",
"version": "1.0.0",
"main": "./lib/main.js",
"types": "./src/main.ts"
}

然而,这会使事情在发布时崩溃吗?

至少如果我将 src 放在 .npmignore 下。我无法理解使用多个 typescript 模块实现良好工作流程的最佳方式。

我的意思是,我不想在发布过程中破坏 package.json ……?

最佳答案

TypeScript 项目引用

据我所知,TypeScript Project References 将满足您的要求:

  • VS Code 导航转到 *.ts 源文件而不是 *.d.ts 文件。
  • package.json types 值引用了 *.d.ts 文件。

这提供了开发人员工具,而无需改变您发布的方式/内容。

演示

我创建了一个简单的 demo project in GitHub .以下是如何使用代码导航设置项目引用的要点。

package01

tsconfig.json 允许另一个 TypeScript 项目引用它(composite)并使代码导航正常工作(declarationMap)。在 package.json 中,NPM 作用域 (@shaunluttin) 并不是完全必要的;我将其包含在内是为了避免命名冲突。

tsconfig.json

{
"compilerOptions": {
"target": "es5",
"composite": true,
"declarationMap": true
}
}

包.json

{
"name": "@shaunluttin/package01",
"version": "1.0.0",
"main": "index.js",
"types": "index.d.ts"
}

package02

tsconfig.json references package01。这就是设置工具的原因。 package.json 以与通常相同的方式依赖于 package01。

tsconfig.json

{
"compilerOptions": {
"target": "es5"
},
"references": [
{
"path": "../package01"
}
]
}

包.json

{
"name": "@shaunluttin/package02",
"version": "1.0.0",
"main": "index.js",
"types": "index.d.ts",
"dependencies": {
"@shaunluttin/package01": "1.0.0"
}
}

NPM 链接

对于本地开发,这两个包是connected with npm link .

cd package01
npm link

cd ../package01
npm link @shaunluttin/package01

最后的想法

The documentation提到了一些注意事项,这些注意事项过于复杂,无法在此答案中列出。

关于typescript - 为基于 typescript 的库在 package.json 类型字段中放置什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48952313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com