我有点困惑,如何最好地与代码导航并行开发多个typescript模块,并且仍然以正确的方式发布.所以我应该在包裹里放些什么呢.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"
}

如果我开发了一个并行的模块,依赖于这个模块,比如vscode中的代码导航会让我跳转到这个定义文件中.这不是我想要的.

我想进入源文件,以便能够在dep中并行编辑.无论是内联的还是非内联的,sourcemaps的tsconfig设置在这方面都没有帮助.我可能错过了什么.我管理工作流程的唯一方法是真正指向源代码.取而代之的是ts文件:

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

然而,这会让事情在出版时破裂,对吗?

至少如果我把src放在下面.米格诺尔.我不明白用多个typescript模块创建一个好的工作流的最佳方法.

我的意思是,我不想把包裹弄坏.json作为发布过程的一部分…?

推荐答案

TypeScript Project References

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

  • VS代码导航指向*.ts源文件,而不是*.d.ts文件.
  • The 包裹json types value references the *.d.ts file.

它提供了开发人员工具,而无需更改发布方式/内容.

Demo

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

包装01

Tconfig.json允许另一个TypeScript项目引用它(composite),并允许代码导航工作(declarationMap).在包裹里.在json中,NPM范围(@shaunluttin)并非完全必要;我加入它是为了避免命名冲突.

tsconfig.json

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

包裹json

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

包装02

The tsconfig.json references 包装01. That's what sets up the tooling. The 包裹json depends on 包装01 in the same way it normally would.

tsconfig.json

{
  "compilerOptions": {
    "target": "es5"
  },
  "references": [
    {
      "path": "../包装01"
    }
  ]
}

包裹json

{
  "name": "@shaunluttin/包装02",
  "version": "1.0.0",
  "main": "index.js",
  "types": "index.d.ts",
  "dependencies": {
    "@shaunluttin/包装01": "1.0.0"
  }
}

NPM链接

对于当地的发展,这两个方案是connected with npm link个.

cd 包装01
npm link

cd ../包装01
npm link @shaunluttin/包装01

最后的 idea

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

Typescript相关问答推荐

错误:note_modules/@types/note/globals.d.ts:72:13 -错误TS 2403:后续变量声明必须具有相同的类型

如何判断输入是否是TypeScript中的品牌类型?

数组文字中对象的从键开始枚举

rxjs forkJoin在错误后不会停止后续请求

Express Yup显示所有字段的所有错误

PrimeNG日历需要找到覆盖默认Enter键行为的方法

在包含泛型的类型脚本中引用递归类型A<;-&B

Angular NgModel不更新Typescript

常量类型参数回退类型

判断映射类型内的键值的条件类型

->;Boolean类型的键不能分配给类型Never

17个Angular 的延迟观察.如何在模板中转义@符号?

接受字符串或数字的排序函数

基于未定义属性的条件属性

如何从上传文件中删除预览文件图标?

通过函数传递确切的类型,但验证额外的字段

将带有额外id属性的Rust struct 展平回TypeScript单个对象,以返回wasm-bindgen函数

如何根据Typescript 中带有泛型的对象嵌套键数组获取数组或对象的正确类型?

是否有可能不允许在 TypeScript 中设置类属性,但也会抛出运行时错误?

通过函数将对象文字类型映射到另一种类型的方法或解决方法