如何使用 TypeScript 设置 Lerna monorepo
How to set up Lerna monorepo with TypeScript
我有一个 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,我正在尝试使用另一个 package/module 来按原样加载 TypeScript 代码:
import { someTypeScriptStuff } from '@test/core'
但是,这不起作用。 IntelliJ 和 TSLint 都抱怨缺少模块。如果我将 package.json
中的 main
字段的值更改为 src/index.ts
,那么它将起作用。
我不想在开发中一直把TS代码编译成dist
,因为很痛苦
显然,我也不能将主字段更改为 src/index.ts
,因为它应该引用在 node/browsers.[=25= 中按原样工作的普通 JavaScript ]
我可以在 package.json
中使用 IntelliJ 和 TSLint 都可以使用的 TypeScript 特定字段吗? 那就太理想了。
我能想到的唯一解决方案是从字面上让 main
字段指向 TS 代码并更改我的构建过程以通过交换 main
字段来改变打包的 NPM 模块的内容返回 dist/cjs/index.js
进行分发。我想避免这种情况。
我在根目录中用这个解决了这个问题 tsconfig.json
:
{
"compilerOptions": {
"baseUrl": "./packages",
"paths": {
"@test/*": ["./*/src"]
}
}
...
}
然后我将它添加到每个包自己的 tsconfig.json
:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src"
}
}
我有一个 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,我正在尝试使用另一个 package/module 来按原样加载 TypeScript 代码:
import { someTypeScriptStuff } from '@test/core'
但是,这不起作用。 IntelliJ 和 TSLint 都抱怨缺少模块。如果我将 package.json
中的 main
字段的值更改为 src/index.ts
,那么它将起作用。
我不想在开发中一直把TS代码编译成dist
,因为很痛苦
显然,我也不能将主字段更改为 src/index.ts
,因为它应该引用在 node/browsers.[=25= 中按原样工作的普通 JavaScript ]
我可以在 package.json
中使用 IntelliJ 和 TSLint 都可以使用的 TypeScript 特定字段吗? 那就太理想了。
我能想到的唯一解决方案是从字面上让 main
字段指向 TS 代码并更改我的构建过程以通过交换 main
字段来改变打包的 NPM 模块的内容返回 dist/cjs/index.js
进行分发。我想避免这种情况。
我在根目录中用这个解决了这个问题 tsconfig.json
:
{
"compilerOptions": {
"baseUrl": "./packages",
"paths": {
"@test/*": ["./*/src"]
}
}
...
}
然后我将它添加到每个包自己的 tsconfig.json
:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "src"
}
}