一般,js 项目,webpack 打包后,只要把 dist 目录下的所有文件,部署到 aws 等云服务,就可以工作了!
那么,如果我提供了一些 api,发布到 npm ?需要啥特别处理 /流程么?尤其是,要支持 typescript,怎么处理?好像是要生成一个 custom.d.ts 文件!这个能自动生成么?
以及,想使用的第三方类库,没有提供 type,我自己的 typescript 项目如何使用?
有没有相关文档,介绍的比较好的!?
搜索了一下,暂时没找到写得比较好。 特来向大家请教一下
1
yanguoyu 2021-03-19 09:11:14 +08:00
如果你要写 lib 库,可以尝试用这个 https://github.com/yanhaijing/jslib-base,至于使用的第三方库没有 declared 文件,那就需要自己定义,可以看 ts 官方文档或者翻译文档。
中文: https://www.tslang.cn/docs/handbook/declaration-files/introduction.html 英文: https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html |
2
vcfvct 2021-03-19 09:18:28 +08:00 via iPhone
Type 的话 tsc 可以生成,一般 lib 的话也可以把所以相关类放在 index.ts ,这样别人就可以直接从你 lib 的 root import 了.
后端 bundle 也可以试试 esbuild,treeshaking 什么的比较🐮,速度飞快。 |
3
vcfvct 2021-03-19 09:19:47 +08:00 via iPhone
当然 index 里是 export 一下,不是真正的所以 source😀
|
4
musi 2021-03-19 09:20:08 +08:00
蹲一个好用的方案
|
5
ccraohng 2021-03-19 09:42:48 +08:00 via iPhone
|
6
hupo0 2021-03-19 09:49:25 +08:00
你可以参考别人的库是怎么打 npm 包和发布的,比如说我的。
|
7
hupo0 2021-03-19 09:50:20 +08:00
|
8
LOWINC 2021-03-19 09:54:46 +08:00
|
9
zhuweiyou 2021-03-19 13:12:46 +08:00
如果你是 TS 写的, tsc 可以直接编译产出 d.ts
如果你是 JS 写的,据我所知得手写 |
10
wobuhuicode 2021-03-19 14:37:24 +08:00
很简单,package.json 指定一个 .d.ts 文件就可以了
"types": "index.d.ts" |
11
ruoxie 2021-03-19 15:16:56 +08:00
|
12
fox2081 2021-03-19 16:00:31 +08:00
如果是 TS 项目,会自动生成 dts,但是是一对一的,不会打包成一个,想打包的话 rollup 、webpack 都有提供一些插件,但效果都不慎理想,之前打包类库有用过一个 rollup-plugin-dts,项目代码一多,到时候声明文件就不是人能看懂的了。TS 现在已经不推荐使用 namespace 和 module 了,但是 dts 里面还是挺好用的,后面还是通过自动生成的手动整理。
JS 项目想生成 dts 估计不太靠谱。 支持 ts,就要在 package.json 中的 typings 中指向你项目中的 dts 文件,文件名没关系,就行 main 这样的入口文件。 第三方类库如果没有自带声明,可以搜 @types/xxx,额外安装声明文件,不冷门的基本都有,没有的话在你项目内容可以“帮”他写,一般是 declare module 'xxx',放在你 tsconfig 包含的目录里。 dts 是解除 ts 之后就让人爱不释手的东西,即使是 js 项目,编辑器也可以根据其他项目的 dts 提供智能提示,我现在公司调用后端的接口就是通过后端扫描数据结构和接口路由自动生成并发布的一个项目,声明文件截至目前有 16325 行,打包之后的代码只有 12kb,里面有 10kb 还是后端生成的枚举文件,使用起来接口地址、参数定义、返回格式统统智能提示都提供,如果是 ts 项目,接口更新会直接在编译时把需要改的地方列出来,平时开发直接不用查文档,组员用过都说好 |