繁体   English   中英

Typescript 库:隐藏内部导出

[英]Typescript library: Hide internal exports

我正在用通过 npm 发布的打字稿构建一个库。

在作为库起点的 index.ts 中,导出了所有公共类和枚举。

import { MyClass } from './internal/my-class'
import { MyEnum } from './internal/my-enum'
export { MyClass, MyEnum }

这很有效,但我注意到用户也可以通过使用文件的直接路径来导入内部函数/类等。

// in a project that installed my library as an npm dependency
import { InternalClass } from 'my-lib/dist/internal/internal-class'

有没有办法防止这种情况?

我需要“导出” InternalClass因为我正在整个库中导入和使用它,但我不想公开它。 我尝试使用命名空间,但无法真正让它工作。

您应该将tsconfig.json (或从命令行)中的stripInternal标志设置为true并使用带有@internal标记的 tsdoc 注释。

// internal/my_file.ts
/** @internal */
export function myInternalFunction() {}

请注意,这将从类型声明中删除该函数,因此它不会在编辑器中自动完成,但如果您确实需要隐藏内部细节,我建议您使用Rollup和 TypeScript 插件捆绑您的代码。

使用microbundle或类似的工具来捆绑你的包。 它应该生成 1 个文件,您的用户只能从该入口点导入。

我不认为你可以。

我想你可以使用 TS 的模块编译成 JS 的 IIFE,正如 Lucas Morgan 在这里描述的那样,但我没有太多意义这样做。 如果您发布开源,就无法阻止任何人提取您的代码的任何部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM