如何使用TypeScript设置Lerna monorepo

如何使用TypeScript设置Lerna monorepo,typescript,intellij-idea,npm,package.json,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", { "compilerOptions": { "baseUrl": "./packages

我有一个
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",
{
  "compilerOptions": {
    "baseUrl": "./packages",
    "paths": {
      "@test/*": ["./*/src"]
    }
  }
  ...
}
{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "rootDir": "src"
  }
}
该库将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
中是否有一个特定于类型脚本的字段,IntelliJ和TSLint都可以使用它那太理想了。


我能想到的唯一解决方案是,通过将
main
字段切换回
dist/cjs/index.js
进行分发,使
main
字段指向TS代码,并更改我的构建过程,以改变打包的NPM模块的内容。我想避免这样

我在根
tsconfig.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",
{
  "compilerOptions": {
    "baseUrl": "./packages",
    "paths": {
      "@test/*": ["./*/src"]
    }
  }
  ...
}
{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "rootDir": "src"
  }
}
然后我将它添加到每个包自己的
tsconfig.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",
{
  "compilerOptions": {
    "baseUrl": "./packages",
    "paths": {
      "@test/*": ["./*/src"]
    }
  }
  ...
}
{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "rootDir": "src"
  }
}