Bee*_*ice 6 node.js npm typescript npm-publish npm-pack
我正在向 NPM 发布一个库。该库是用Typescript编写的,Typescript编译的结果放在一个lib/文件夹中。主文件是index.ts导出我的公共 API 的文件:
export * from './functions';
export * from './models';
Run Code Online (Sandbox Code Playgroud)
在 package.json 中,我指定:
{"main": "lib/index.js", "types": "lib/index.d.ts", "files": ["lib/**/*"]}
Run Code Online (Sandbox Code Playgroud)
一旦我的包发布并安装在其他地方,它的文件夹结构是:
lib/
index.js
index.d.ts
functions/
index.ts
my-function.ts
models/
index.ts
my-model.ts
Run Code Online (Sandbox Code Playgroud)
消费者从包根目录导入所有内容:
{"main": "lib/index.js", "types": "lib/index.d.ts", "files": ["lib/**/*"]}
Run Code Online (Sandbox Code Playgroud)
这可行,但我喜欢隔离路径的想法。一种用于函数,另一种用于模型。目前,如果我删除顶级索引,导入将被隔离,但它们现在包含lib/我不想要的路径中的文件夹:
lib/
index.js
index.d.ts
functions/
index.ts
my-function.ts
models/
index.ts
my-model.ts
Run Code Online (Sandbox Code Playgroud)
我实际上想要完成的事情是相同的,但没有lib/. 我有一个可行的解决方案,但它似乎太复杂了。这是有效的:
main types和files键。index.tsnpm publish使用以下步骤替换简单的内容:
/lib文件夹中/lib文件夹并运行npm pack并记下创建的 tarball 的名称npm publish {{TARBALL_NAME}}因此,安装后发布的包具有以下文件夹结构:
functions/
index.ts
my-function.ts
models/
index.ts
my-model.ts
Run Code Online (Sandbox Code Playgroud)
因为东西不再嵌套在lib/目录中,所以消费者可以按照我的意愿导入:
import {someFunction, SomeModel} from 'a-library';
Run Code Online (Sandbox Code Playgroud)
问题是打包和发布来完成这个任务似乎太麻烦了。当我的队友一直在跑步时,我永远不会让他们进入 3 或 4 步的过程npm publish。
有没有更简单的方法来完成我所追求的目标?
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |