我正在使用Typescript。我的来源是src
。在转换时,Typescript将其结果输出到lib
文件夹。因此,当需要我的包组件时,我必须写下以下内容:
import { myModuleMain } from 'mylib/lib'
import { ComponentA } from 'mylib/lib/ComponentA'
import { ComponentB } from 'mylib/lib/ComponentB'
好的,当它只发生一次时,它没关系。问题是当需要这些组件中的几个或许多时。到处都有几十个/lib
路径段,我试图摆脱它,只需执行以下操作:
import { myModuleMain } from 'mylib'
import { ComponentA } from 'mylib/ComponentA'
import { ComponentB } from 'mylib/ComponentB'
我应该找到一种方法来定义我的lib的基本路径。但据我所知,我必须在我的lib代码中更改require
的搜索路径。有没有办法在不改变搜索路径的情况下实现相同的行为?例如,通过package.json
属性?
我自愿省略在单个main
入口点导出所有组件的选项,因为最终用户不应该使用除main
之外的文件:只有插件可以使用他们。换句话说,我希望在lib
文件夹中包含多个入口点。使用main
中的package.json
属性只会简化第一个模块的import
语句,例如 myModuleMain
答案 0 :(得分:0)
我在库配置(package.json)上使用main
:
{
"name": "mylib",
"description": "My library...",
"version": "1.0.0",
"main": "./lib/index.js",
......
}
主要字段是模块ID,它是您的主要入口点 程序。也就是说,如果您的包名为foo,并且用户安装 它,然后确实需要(“foo”),然后你的主模块的出口 对象将被退回。
这应该是相对于包的根目录的模块ID 文件夹中。
对于大多数模块而言,最有意义的是拥有一个主脚本和 通常不多。
另外,在ts.config上我有这个配置:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"outDir": "./lib",
"rootDir": "./src",
"moduleResolution": "node",
....
}
}
答案 1 :(得分:0)
因此,当需要我的包组件时,我必须编写以下内容:
嗯,你可以import the files themselves.你不必要求转换版本。
# foo.ts
export default function f (): void {
console.log('foo')
}
现在你有app.ts
import f from './foo';
f();
你应该完全忽略已转换的输出。