首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Typescript库:隐藏内部导出

Typescript库:隐藏内部导出
EN

Stack Overflow用户
提问于 2019-12-01 12:06:53
回答 3查看 1.4K关注 0票数 12

我正在构建一个通过npm发布的typescript库。

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

代码语言:javascript
复制
import { MyClass } from './internal/my-class'
import { MyEnum } from './internal/my-enum'
export { MyClass, MyEnum }

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

代码语言:javascript
复制
// in a project that installed my library as an npm dependency
import { InternalClass } from 'my-lib/dist/internal/internal-class'

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

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

EN

回答 3

Stack Overflow用户

发布于 2020-12-08 00:01:54

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

代码语言:javascript
复制
// internal/my_file.ts
/** @internal */
export function myInternalFunction() {}

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

票数 8
EN

Stack Overflow用户

发布于 2020-12-04 15:06:48

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

票数 3
EN

Stack Overflow用户

发布于 2020-12-01 05:40:09

我觉得你做不到。

我想你可以使用TS的模块来编译成JS的IIFE,as described by Lucas Morgan here,但是我觉得这样做没有多大意义。如果你发布了开源软件,任何人都可以提取你的代码的任何部分。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59122428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档