【发布时间】:2016-08-22 01:21:38
【问题描述】:
我们正在尝试使用 Webpack 编译 typescript 代码,我们将“模块”(现在定义为外部模块)替换为命名空间(定义为内部模块)。
此更改主要是为了符合 typescript 的建议,并确保在 Karma 上运行基于 Jasmine 的单元测试不需要对“require”的依赖。 Karma-typescript 预处理器已配置好,测试用例运行良好,无需“require”。
对命名空间的更改导致我们删除了对 require 的依赖,这在通过 tsc 进行单元测试和代码编译时效果很好。但是在使用 typescript loader 通过 Webpack 编译时(我尝试过 ts-loader、Webpack-typescript),输出只包含入口 ts 文件的代码,而不是它的依赖项。 Tsc 已经有一个选项 (--outFile) 可以将输出连接到一个文件中,但是两个加载器都不使用它。
有没有办法(加载器或加载器的配置)来解决依赖并将其捆绑到Webpack生成的单个输出js中?
【问题讨论】:
-
今天,正确的方法是使用 ES6 模块(导入/导出语法)。然后,您可以配置 TypeScript 以生成 CommonJS 语法。这应该可以帮助你使用 Webpack 和 Jasmine。
-
导入/导出语法被转换为 require 调用,这导致我们在 karma 中有 requirejs 依赖。我试图避免这种情况,并根据手册http://www.typescriptlang.org/docs/handbook/namespaces.html 中的更新使用命名空间。这种理解正确吗?
标签: javascript typescript webpack typescript1.8