创建可在浏览器和nodejs中使用的打字稿库

Paw*_*wel 8 javascript browser module node.js typescript

我想创建一个可以在浏览器和nodejs中使用的库.为了论证,让我们说这是我的库:

export default class MyClass {
    public getString(): string {
        return "Message";
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,浏览器不支持ES2015模块,我不希望在浏览器中依赖requirejs或任何其他模块加载器 - 我希望通过使用script标记包含生成的.js文件来使用此库.感觉我想要的东西可以通过使用内部模块来实现(我不想污染全局命名空间).但是,当我将代码包装在namespace/中module时,我很难将其编译为commonjs模块.

实现我想要的正确方法是什么?或者,可能是,我完全脱离了轨道这里是打字稿和javascript noob?

小智 7

我想你需要的是UMD.随着tsconfig.json

script

生成的JavaScript将如下所示:

UMD

它适用于节点(CommonJS)以及浏览器(CommonJS,AMD).要允许您的库的用户只通过tsconfig.json标记包含它,您需要模块捆绑器,Webpack,BrowserifyRollup.这些将使用全局导出生成UMD定义,因此库的主文件的默认导出将作为全局范围内的某个变量提供.