部分地整合打字稿,angularjs,grunt

时间:2018-04-16 11:48:52

标签: angularjs typescript gruntjs grunt-usemin

美好的一天,

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

原因是1)使用打字稿和linting来提高代码质量。 2)引入模块化,因为当前.js文件大小增加,代码变得不那么可读。

目前该项目使用grunt和以下项目:

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

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

工作流将typescript代码成功集成到vendor.js中。

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

Uncaught ReferenceError: exports is not defined Stack Overflow Problem Thread

但该线程中的所有建议都没有删除(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. 如何摆脱这些错误,并将打字稿中写入的部分巧妙地整合到捆绑包中。
  2. 将打字稿部分整合到angularjs和grunt项目中的任何建议或任何其他可能的途径?
  3. 如果我走错了路,那是不可能的,或者太复杂了。您认为以哪种方式实现我的目标1)和2)(在顶部)?
  4. 非常感谢你的帮助。

    干杯, 托比亚斯

1 个答案:

答案 0 :(得分:0)

我在这个问题中找到了答案:TS1148 ~ How to "import" with --module: "none" and typescricpt 2.x

  1. 使用"module": "none"
  2. 使用全局d.ts文件,如中所述 上面的链接。
  3. 使用grunt和usemin。放一个水珠图案 (通配符)到你的html文件中以包含编译的typescript 档案<script src="xyz/build/tsc/**/*.js"></script>