如何使用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"
}
}