使用grunt-ts编译typescript时require.js和sourcemaps的问题

时间:2016-12-29 22:18:23

标签: javascript typescript gruntjs requirejs grunt-ts

当使用grunt-ts并指定和输出文件时,我的应用程序按预期运行,但由于该选项不支持快速编译,我尝试使用常规编译,其中所有.ts文件都存在于dist文件夹

有两个问题,首先,它将无法加载任何导入的文件,因为它将尝试在没有扩展名的情况下查找它。作为一个快速修复,我在require.js文件上编辑了load fn并且所有依赖项都正确加载,但是源图停止了工作,我得到的只是chrome检查器上的空白文件(当然我不喜欢#39;我想依靠肮脏的黑客攻击。)

请注意,我对requirejs不太熟悉,所以我不太确定这是不是我的错误配置,错误或缺少的东西。

我的咕噜声配置,与ts相关

ts: {
      options: {
        module: 'amd',
        target: 'es5',
        experimentalDecorators: true
      },
      dev: {
        src: ['client-app/**/*.ts'],
        outDir: "dist",
        watch: '.'
      }
    },

我的bootstrap.js只是入口点和require.js配置文件

requirejs.config({
  baseUrl: '.',
  waitSeconds: 20
});

requirejs(['/init'], function(module) {
  module.main()
});

已编译的init文件的简化版

define(["require", "exports", './section-manager.view'], function (require, exports, section_manager_view_1,) {
    "use strict";
    function main() {
        ///
    }
    exports.main = main;
});
//# sourceMappingURL=init.js.map

和html

<script src="/js/lib/require.js" data-main="/bootstrap"></script>

感谢任何帮助,谢谢

编辑:

使用System.js或@Luis答案解决了加载问题。 使用sourceRoot

解决了源地图问题
inlineSourceMap: true,
inlineSources: true

到ts选项

1 个答案:

答案 0 :(得分:1)

不要使用绝对模块名称。如果您使用绝对名称,则RequireJS假定您在从模块名称生成路径时不希望进行任何更改,并且添加.js扩展名。您应该使用相对路径,或者您可以这样做:

requirejs.config({
    baseUrl: '/'
});

requirejs(['init'], function(module) {
  module.main()
});

通过这样做,RequireJS将自动添加.js扩展名。