gpt4 book ai didi

typescript - 如何在 Typescript 库项目中生成子模块?

转载 作者:搜寻专家 更新时间:2023-10-30 21:13:27 25 4
gpt4 key购买 nike

我正在构建一个名为 br-store 的库项目,我在其他项目中使用了像这样的导入声明:

import { getAlarms } from "br-store"

在这种情况下,getAlarms 是一个导出函数,位于 src/store/alarm/actions 中。

我现在想要实现的是转译我的库,以便我能够以这样的方式在其他任何地方使用它:

import { getAlarms } from "br-store/alarm/actions"

我的项目具有以下文件夹结构:

./src/store/
├── alarm
│   ├── alarm-actions.ts
│   ├── alarm-constants.ts
│   ├── alarm-reducer.ts
│   └── index.ts
|__ index.ts
......

tsconfig.json:

{
"compilerOptions": {
/* Basic Options */
"moduleResolution": "node",
"target": "es6",
"module": "commonjs",
"sourceMap": true,
"outDir": "./bin",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"noImplicitAny": false,
"declaration": true
},
"include": [
"src/**/*",
],
"exclude": [
"spec/*",
"tests/*",
"integration/",
"node_modules/"
]
}

./src/store/index.ts:

export * from './alarm'
.....

/src/store/alarm/index.ts

export * from './alarm-actions'
export * from './alarm-reducer'

最佳答案

我通常建议避免深层链接。

当用户依赖于您的内部文件夹结构时,任何文件夹更改都会对用户造成破坏性更改。它会使您的图书馆不必要地死板。

如果您手动管理重定向:

// <project-root>/alarm/actions.js`
export * from '../dist/alarm/actions'

这可能没问题,因为您仍然有合理的控制权和自由度来做自己的事情。但这是一个手动步骤。

如果你真的想让 tsc 自动为你做这件事,你可以设置 outDir: ".." 并让它把你所有的 js 文件转储到项目的根目录。

但我认为您不会高兴看到您的项目变成垃圾场。

关于typescript - 如何在 Typescript 库项目中生成子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54437614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com