我需要一些关于发布NPM模块的最佳方法的建议。
我的项目在Typescript中,我可以编译为es5 commonjs,以及捆绑任何其他打字用户的定义文件。然而,是否应该这样做似乎存在一些争议。在线有相当多的建议,捆绑应留给顶级应用程序消费者"。
示例应用程序的结构如下:
root
├── src
│ ├── index.ts
│ └── class1.ts
├── package.json
└── tconfig.json
在package.json中,我可以使用新的typings功能,它将自动在已解析的node_modules目录中查找index.d.ts文件。但回到我原来的观点,有人建议我应该将捆绑销售给最终用户。我很难找到关于如何让开源社区驱动的项目保持干净且易于为每个人消费的任何良好指导。
我可以轻松创建如下文件夹结构:
root
├── bin
│ ├── index.js
│ ├── index.map.js
│ └── index.d.ts
├── src
│ ├── index.ts
│ └── class1.ts
├── package.json
└── tconfig.json
或者,或者将index.js,index.map.js,index.d.ts文件保留在根目录中,以便于使用,但我对于正确的解决方法感到茫然这个。非常感谢任何建议。
参考:Proper way to bundle and consume webpack-built typescript library?
答案 0 :(得分:1)
您引用的答案仅指捆绑。由于大多数NPM软件包都会假设您已经获得了对require的引用,只要您不执行动态需求,大多数捆绑程序都会处理它。
但是,您仍应发布已编译的代码。我建议不要在项目中仅发布 .ts
个文件。编译器将尝试加载文件并使用您的编译器设置解释它们,而不是项目中tsconfig的设置。我最近碰到了这个,我有几个编译器标志(strictNullChecks,noUnusedLocals等),因为编写项目的人没有,因为他们在他们的npm模块中只使用.ts文件,我无法再编译我的项目因为他们的代码不满足编译器的要求。