Node.js 如何发布NPM,以便使用者可以从不同的顶级目录导入
我正在向NPM发布一个库。该库是用Typescript编写的,Typescript编译的结果放在Node.js 如何发布NPM,以便使用者可以从不同的顶级目录导入,node.js,typescript,npm,npm-publish,npm-pack,Node.js,Typescript,Npm,Npm Publish,Npm Pack,我正在向NPM发布一个库。该库是用Typescript编写的,Typescript编译的结果放在lib/文件夹中。主文件是导出我的公共API的index.ts: export*from./functions'; 从“./models”导出*; 在package.json中,我指定: {"main": "lib/index.js", "types": "lib/index.d.ts", "files": ["lib/**/*"]} 一旦我的软件包在别处发布和安装,其文件夹结构为: lib/
lib/
文件夹中。主文件是导出我的公共API的index.ts
:
export*from./functions';
从“./models”导出*;
在package.json中,我指定:
{"main": "lib/index.js", "types": "lib/index.d.ts", "files": ["lib/**/*"]}
一旦我的软件包在别处发布和安装,其文件夹结构为:
lib/
index.js
index.d.ts
functions/
index.ts
my-function.ts
models/
index.ts
my-model.ts
使用者从包根目录导入所有内容:
从“a库”导入{someFunction,SomeModel};
这是可行的,但我喜欢隔离路径的想法。一条路径用于函数,另一条路径用于模型。当前,如果我删除顶级索引,导入将被隔离,但它们现在在我不想要的路径中包含lib/
文件夹:
从'a-library/lib/functions'导入{someFunction};
从'a-library/lib/models'导入{SomeModel};
我实际上想要完成的是相同的,但是没有lib/
。我有一个可行的解决方案,但它似乎太复杂了。以下是有效的方法:
主
类型
和文件
键索引.ts
npm publish
:
- 复制package.json并将其粘贴到
文件夹中/lib
- 将cd放入
文件夹,运行/lib
,并记下创建的tarball的名称npm pack
- 运行
npm发布{{TARBALL_NAME}}
- cd备份到项目根目录
functions/
index.ts
my-function.ts
models/
index.ts
my-model.ts
因为东西不再嵌套在lib/
目录中,消费者可以按照我的意愿导入:
从'a-library/functions'导入{someFunction};
从“a-library/models”导入{SomeModel};
问题在于,打包和发布来实现这一点似乎太麻烦了。当我的队友一直在运行npm publish
时,我永远不会让他们进入3或4步流程
有没有更简单的方法来完成我的目标?您可以将这4个步骤移动到npm脚本中,使其自动化,您的队友可以运行该脚本,如
npm run pack publish