Rah*_*rma 4 node.js npm typescript
问题:我构建了一个库,其中.ts在结构化文件夹中包含许多文件。现在我想发布我的这个库,但不想共享源代码(打字稿文件)。
尝试:当我运行tsc命令时,它会生成.js与每个文件对应的文件.ts。当我保存declaration: true在我的tsconfig.json文件中时,也会为每个文件tsc生成文件。.d.ts.ts
挑战:我的所有.js文件都按预期在结构上生成,但.d.ts也在文件的并行位置生成.js。现在的挑战是,通过这种方式,该库的任何使用者将如何导入类型,因为所有类型都分散在不同的文件夹中,因为没有.d.ts由tsc
我在 NPM 上看到许多模块(例如https://github.com/winstonjs/winston),它们发布单个index.d.ts文件,并且消费者导入它们以使用和利用 Typescript 的优势。
目前我的项目结构如下所示:
- my-project-root-directory
- src
- demo
- main.ts
- sample.ts
-lib
- constants
- some_constant_file1.ts
- models
- some_model_file1.ts
- some_model_file2.ts
- util
- some_util_file.ts
- dist
- demo
- main.js
- main.d.ts
- sample.js
- sample.d.ts
-lib
- constants
- some_constant_file1.js
- some_constant_file1.d.ts
- models
- some_model_file1.js
- some_model_file1.d.ts
- some_model_file2.js
- some_model_file2.d.ts
- util
- some_util_file.js
- some_util_file.d.ts
- logs
- package.json
- tsconfig.json
Run Code Online (Sandbox Code Playgroud)
明明没有index.d.ts文件,怎么获取单个文件呢?单.d.ts文件方法正确吗?或者我正在走向错误的方向?
我已经在 stackoverflow 和 youtube 上的教程上看到了很多答案,所有这些答案都显示了一个简单的示例,其中只有一个 index.ts 文件和与之对应的 index.d.ts 文件。但我找不到解决我的目的的完美方法。
感谢您阅读我的问题,欢迎任何帮助。
我的做法是这样的:
index.ts文件,导出对库使用者有意义的类型。例如:src/lib/constants/index.ts、src/lib/models/index.ts、 ... 每个index.ts文件都会导出其文件夹中存在的所有 TypeScript 类型,以及index.ts其子文件夹中的所有文件。src/index.ts创建一个导出所有子文件夹中所有内容的中心文件src/...。package.json,添加一个types: "dist/index.d.ts"条目。.npmignore文件中,添加 aasrc/条目。通过这种方法,您可以在一个中央文件中引用所有导入dist/index.d.ts,因此库的使用者不需要从包内的不同位置导入类型。此外,您根本不分发 TypeScript 源代码。
以下是您的目录结构最终的样子。我排除了该dist文件夹,但每个文件夹中也会生成一个index.js和文件:index.d.ts
- my-project-root-directory
- src
- index.ts
- demo
- main.ts
- sample.ts
-lib
- constants
- some_constant_file1.ts
- index.ts
- models
- some_model_file1.ts
- some_model_file2.ts
- index.ts
- util
- some_util_file.ts
- index.ts
- logs
- package.json
- tsconfig.json
Run Code Online (Sandbox Code Playgroud)
src/lib/constants/index.ts例如,您的文件可能如下所示:
export * from './some_constant_file1.ts'
Run Code Online (Sandbox Code Playgroud)
您的src/lib/index.ts文件:
export * from './constants';
export * from './models';
export * from './util';
Run Code Online (Sandbox Code Playgroud)
您的src/index.ts文件:
export * from './lib';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2289 次 |
| 最近记录: |