在package.json类型字段中放入基于 typescript的库

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

我有点困惑,如何最好地开发多个 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 作为发布过程的一部分...?

25

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.jsonreferencespackage01。这就是设置工具的原因。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提到了一些在这个答案中列出的警告。

1

这是一个更轻的替代,但它需要使用 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。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(259)
nodejs应用程序的弹性 apm中没有数据
上一篇
TypeError:在“tuple”和“str”的实例之间不支持“<”
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(12条)