美好的一天,
我想将打字稿集成到使用grunt的angularjs项目中。我想一步一步地做,这样就不需要重写整个项目。
原因是 1) 提高代码质量,为此使用打字稿和 linting。2)引入模块化,因为当前.js文件大小增长,代码变得不那么可读。
目前,该项目在以下项目中使用 grunt:
'clean:dist',
'clean:typescript',
'ts',
.......,
'jsbeautifier',
'less',
'useminPrepare',
'concat',
'copy:dist',
'cssmin',
'uglify',
'filerev',
'usemin',
'htmlmin'
在那个繁琐的工作流程中发生的情况是,打字稿部分被编译,打字稿构建目录包含在索引.html文件中。所以'useminPrepare',
'concat',
'copy:dist',
'cssmin',
'uglify',
'filerev',
'usemin',
工作流将打字稿代码成功集成到供应商.js中。
目前的问题是我在浏览器中打开时出现以下错误。
Uncaught ReferenceError: exports is not defined
堆栈溢出问题线程
但是该线程中的所有建议都不会删除(打字稿到)javascript编译代码中的Object.defineProperty(exports, "__esModule", { value: true });
。
我用了<script>var exports = {};</script>
然后我得到了Uncaught ReferenceError: module is not defined
错误。注意:我还包括了<script src="bower_components/commonjs/common.js"></script>
所以我的假设是我需要在'useminPrepare'
和'usemin'
,但似乎Usemin不支持浏览器化。
所以我的问题:
- 我如何摆脱这些错误并理智地将打字稿中编写的部分集成到捆绑包中。
- 有什么建议或任何其他可能的途径将打字稿部分集成到 angularjs 和 grunt 项目中?
- 如果我走错了路,这是不可能的,或者它太复杂了。您认为还有哪种方式可以实现我的目标 1) 和 2)(顶部)?
非常感谢您的帮助。
干杯 托比亚斯
我在这个问题中找到了答案:TS1148 ~ 如何使用 --module:"none"和 typecricpt 2.x "导入">
- 使用
"module": "none"
- 使用全局 d.ts 文件,如中所述 上面的链接。 使用咕噜
- 声和咕噜咕噜。放置一个球形图案 (通配符)到您的 HTML 文件中,以包含编译的打字稿 文件
<script src="xyz/build/tsc/**/*.js"></script>