部分集成 typescript,angularjs,grunt

Integrating typescript partially, angularjs, grunt

美好的一天,

我想将 typescript 集成到一个使用 grunt 的 angularjs 项目中。我想一步一步地做,这样就不需要重新编写整个项目。

原因是 1) 提高代码质量,为此使用 typescript 和 linting。 2) 引入模块化,因为目前 .js 文件的大小不断增加,代码的可读性也越来越差。

目前该项目在以下项目中使用 grunt:

'clean:dist',
    'clean:typescript',
    'ts',
    .......,
    'jsbeautifier',
    'less',
    'useminPrepare',
    'concat',
    'copy:dist',
    'cssmin',
    'uglify',
    'filerev',
    'usemin',
    'htmlmin'

在那个 grunt 工作流程中发生的事情是,typescript 部分被编译并且 typescript 构建目录包含在 index.html 文件中。所以 'useminPrepare', 'concat', 'copy:dist', 'cssmin', 'uglify', 'filerev', 'usemin',

workflow 将 typescript 代码成功集成到 vendor.js。

目前的问题是我在浏览器中打开时出现以下错误。

Uncaught ReferenceError: exports is not defined

但是该线程中的所有建议都没有删除 (typescript to ) 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 不支持 browserify。

所以我的问题:

  1. 如何消除这些错误并将用 typescript 编写的部分合理地集成到包中。
  2. 将 typescript 部分集成到 angularjs 和 grunt 项目中的任何建议或任何其他可能的途径?
  3. 如果我走错了路,那是不可能的,或者太复杂了。您认为还有哪些其他方式可以实现我的目标 1) 和 2)(最上面)?

非常感谢您的帮助。

干杯, 托拜厄斯

我在这个问题中找到了答案:

  1. 使用"module": "none"
  2. 使用全局 d.ts 文件,如中所述 上面的link。
  3. 使用 grunt 和 usemin。放一个球形图案 (通配符)进入你的 html 文件以包含编译的打字稿 文件 <script src="xyz/build/tsc/**/*.js"></script>