我有点困惑,如何最好地开发多个 typescript 模块与代码导航并行,仍然发布正确的方式。那么我真的应该在 package.json“types”字段中放入什么?
根据: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 设置与 sourcemaps,inlined 或没有在这方面有所帮助。我可能会在这里缺少一些东西。我管理我的工作流体面工作的唯一方法是实际指向源 main.ts 文件,而不是:
{
"name": "awesome",
"author": "Vandelay Industries",
"version": "1.0.0",
"main": "./lib/main.js",
"types": "./src/main.ts"
}
然而,这将使事情打破时发表的权利?
至少如果我将 src 放在.npmignore 下。我无法理解具有多个打字稿模块的良好工作流程的最佳方法。
我的意思是,我不想把 package.json 作为发布过程的一部分...?

TypeScript 项目引用
据我所知,TypeScriptProject References将满足您的要求:
VS 代码导航转到*.ts
源文件,而不是*.d.ts
文件。
package.jsontypes
值引用*.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
}
}
package.json包
{
"name": "@shaunluttin/package01",
"version": "1.0.0",
"main": "index.js",
"types": "index.d.ts"
}
package02
tsconfig.jsonreferences
package01。这就是设置工具的原因。package.json 以与通常相同的方式依赖于 package01。
tsconfig.json
{
"compilerOptions": {
"target": "es5"
},
"references": [
{
"path": "../package01"
}
]
}
package.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提到了一些在这个答案中列出的警告。

这是一个更轻的替代,但它需要使用 PNPM。在你的 package02 添加到你的 package.json:
"type": "module",
"exports": {
".": "./src/index.ts"
},
"types": "./src/index.ts",
"publishConfig": {
"exports": {
".": "./lib/index.js"
},
"types": "./lib/index.d.ts"
},
当您的包发布时,publishConfig
选项将覆盖 src 中的开发引用。注意,我正在使用此解决方案构建 ESM 包。不确定 CJS。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(22条)