我正在开发一个npm模块。该模块使用Angular2和TypeScript 2。
我正面临着与如何生成此模块有关的麻烦。
我不知道为了生成这个npm模块,我需要遵循哪些步骤。
我创建了public repository on github。
为了生成npm模块,我需要做什么?
答案 0 :(得分:1)
在您设置tsconfig.json
的{{1}}中。它应该是"declarations": true
。 "declaration": true
字段需要在exclude
之外。您还要指定需要包含compilerOptions
的类型,实际上没有这样的文件。
https://www.typescriptlang.org/docs/handbook/compiler-options.html
https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
现在,为了生成模块,请按照以下步骤操作。
编写要从模块公开的所有实用程序的代码。即所有应该从您的模块中“可导入”的实体。
完成上述步骤后,在src(假设src是您的index.d.ts
)中创建一个名为index.tsx的文件或您选择的任何其他名称。在此文件中导出要公开的实体。
接下来,在您的package.json中添加rootDir
和"main": "<outDir>/index.js"
。请务必将"typings": <outDir>/index.d.ts
替换为<outDir>
的输出目录。 tsconfig
字段用于告知安装应用程序在引用此模块时从何处导入。例如,如果安装应用程序执行以下代码行
main
import {abc} from 'swagger-client'
会告诉节点在main
文件中查找abc
。
"<outDir>/index.js"
字段只是typings
的打字稿等价物,即它告诉节点在上例中查找main
类型的位置。
另请注意abc
和main
字段中要提及的文件的扩展名。他们不是ts。根据经验,您不应将typings
文件发布到npm。始终将.ts
文件提交给github,并将生成的.ts
,.js
文件发布到npm。显而易见的原因是,通过提交生成的文件,模块可用于js项目以及ts项目。