请教一下, js 项目打包,发布 lib 和相关 type 方法

2021-03-19 07:18:36 +08:00
 yazoox

一般,js 项目,webpack 打包后,只要把 dist 目录下的所有文件,部署到 aws 等云服务,就可以工作了!

那么,如果我提供了一些 api,发布到 npm ?需要啥特别处理 /流程么?尤其是,要支持 typescript,怎么处理?好像是要生成一个 custom.d.ts 文件!这个能自动生成么?

以及,想使用的第三方类库,没有提供 type,我自己的 typescript 项目如何使用?

有没有相关文档,介绍的比较好的!?

搜索了一下,暂时没找到写得比较好。 特来向大家请教一下

3224 次点击
所在节点    JavaScript
12 条回复
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
vcfvct
2021-03-19 09:18:28 +08:00
Type 的话 tsc 可以生成,一般 lib 的话也可以把所以相关类放在 index.ts ,这样别人就可以直接从你 lib 的 root import 了.
后端 bundle 也可以试试 esbuild,treeshaking 什么的比较🐮,速度飞快。
vcfvct
2021-03-19 09:19:47 +08:00
当然 index 里是 export 一下,不是真正的所以 source😀
musi
2021-03-19 09:20:08 +08:00
蹲一个好用的方案
ccraohng
2021-03-19 09:42:48 +08:00
如果不是 ts 写的,package.json 指定 typings 字段。
如果是 ,打开输出 dts 选项。
或者发布 @types
为第三库写申明 搜一下应该蛮多的,
hupo0
2021-03-19 09:49:25 +08:00
你可以参考别人的库是怎么打 npm 包和发布的,比如说我的。
hupo0
2021-03-19 09:50:20 +08:00
@hupo0 我靠,我想换行怎么就发出去了。
https://github.com/Iplaylf2/no-stream
主要看顶级目录,package.json 和 gulpfile.js 。
LOWINC
2021-03-19 09:54:46 +08:00
zhuweiyou
2021-03-19 13:12:46 +08:00
如果你是 TS 写的, tsc 可以直接编译产出 d.ts
如果你是 JS 写的,据我所知得手写
wobuhuicode
2021-03-19 14:37:24 +08:00
很简单,package.json 指定一个 .d.ts 文件就可以了
"types": "index.d.ts"
ruoxie
2021-03-19 15:16:56 +08:00
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 项目,接口更新会直接在编译时把需要改的地方列出来,平时开发直接不用查文档,组员用过都说好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/763032

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX