typescript - 如何使用 TypeScript 设置 Lerna monorepo

标签 typescript intellij-idea npm package.json monorepo

我有一个 core 库,在 package.json 中包含以下内容:

"main": "dist/cjs/index.js",
"module": "dist/esm/index.js",
"es2015": "dist/es2015/index.js",
"types": "dist/es2015/index.d.ts",
"typings": "dist/es2015/index.d.ts",

该库将 TypeScript 代码构建到 dist/ 文件夹中进行分发。源代码位于 src/ 中。

我正在使用 Lerna 和 monorepos,并且我正在尝试获取另一个包/模块来按原样加载 TypeScript 代码:

import { someTypeScriptStuff } from '@test/core'

但是,这不起作用。 IntelliJ 和 TSLint 都提示缺少模块。如果我将 package.json 中的 main 字段的值更改为 src/index.ts,那么它就可以工作。

我不想在开发中一直将TS代码编译成dist,因为这很痛苦。

显然,我也无法将 main 字段更改为 src/index.ts,因为它应该引用在节点/浏览器中按原样工作的普通 JavaScript。

是否有我可以在 package.json 中使用的 TypeScript 特定字段,IntelliJ 和 TSLint 都可以使用它? 那将是理想的。

我能想到的唯一解决方案是从字面上使 main 字段指向 TS 代码,并更改我的构建过程,通过交换 main< 来改变打包的 NPM 模块的内容 字段返回到 dist/cjs/index.js 进行分发。我想避免这种情况。

最佳答案

我在根tsconfig.json中用这个解决了它:

{
  "compilerOptions": {
    "baseUrl": "./packages",
    "paths": {
      "@test/*": ["./*/src"]
    }
  }
  ...
}

然后我将其添加到每个包自己的 tsconfig.json 中:

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "rootDir": "src"
  }
}

关于typescript - 如何使用 TypeScript 设置 Lerna monorepo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56515778/

相关文章:

javascript - 在 Electron 中运行 Jest 并使用 --inspect-brk

intellij-idea - intellij 想法 "Load error: undefined path variables"一次又一次

android - 如何从android studio 3.2中删除generatedJava

intellij-idea - IntelliJ IDEA 12 不解析同一个包中的类,适用于 Eclipse

javascript - 请求 Stack Overflow API 返回奇怪的响应

javascript - 类型(Javascript,如何创建时间戳

angular - Ionic 3 值绑定(bind)地理定位

typescript - 为什么当我将对象显式包装在 `if` 中时,TS 会提示对象可能为空?

javascript - 使用 nunjucks 或其他方法的嵌套变量的模板解决方案

javascript - 如何安装 package.json 中没有的 npm 依赖项?