Module 为单个文件库使用TypeScript和ES6模块的可行性
目前,我们的组织正在开发一个JavaScript库,用于我们的一个产品。目前,这是通过以下步骤开发的:Module 为单个文件库使用TypeScript和ES6模块的可行性,module,typescript,ecmascript-6,Module,Typescript,Ecmascript 6,目前,我们的组织正在开发一个JavaScript库,用于我们的一个产品。目前,这是通过以下步骤开发的: 使用TypeScript和内部模块创建命名空间类(一个命名空间用于我们的内部类,一个命名空间用于公共API),使用//标记确定依赖项 针对ES5,从\u references.ts(内部和公共API的两步过程)生成编译的JavaScript(带有--out标志),将所有内容连接并缩小为单个js文件 使用为公共API生成的.d.ts文件自动生成文档 我们一直在关注代码库的更新,我们也在关注T
- 使用TypeScript和内部模块创建命名空间类(一个命名空间用于我们的内部类,一个命名空间用于公共API),使用
标记确定依赖项//
- 针对ES5,从
(内部和公共API的两步过程)生成编译的JavaScript(带有\u references.ts
标志),将所有内容连接并缩小为单个js文件--out
- 使用为公共API生成的
文件自动生成文档.d.ts
tsconfig.json
,以及ES6模块的使用。我承认我自己没有最全面的知识,但我遇到了以下问题:
- ES6模块似乎依赖于保留目录结构,因此这可能意味着我们失去了名称空间。我不确定我们以后如何才能访问ES5平台上的课程
- 我试着研究
的用法,看看如何将所有东西捆绑在一起;然而,它需要一个程序入口点,我们的库并没有这个入口点,因为它通常只是一系列具有与我们组织的产品交互功能的类声明browserify
--modulecommonjs
)编译到ES5。使用commonjs
模块(又称NPM模块)是一种成熟的模式,主要的工作流工具支持它,如webpack
,jspm
,browserify
我们的库实际上没有,因为它通常只是一系列类声明,具有与我们组织的产品交互的功能
创建一个
index.ts
和export
库公共api的内容。这个文件就是您的入口点。我不同意您对“ES6模块似乎依赖于保留目录结构”的回答。ES6模块不会对如何解析模块标识符做出任何假设。这一切都取决于实际的模块加载器。目前,ES6模块通常被传输到CommonJS,CommonJS确实使用文件路径来识别模块(但同样,这与ES6模块无关)。谢谢。我已将该部分更新为特定于typescript;)