我正在使用Angular,TypeScript和ES6模块语法。让我们假设我有一个模块定义如下:AngularJS + TypeScript + ES6模块:如何打包浏览器?
// SubModule.ts
import MyService from 'services/MyService';
export default angular.module('subModule', [])
.service('myService', MyService);
编译JavaScript的将是:
var MyService_1 = require('services/MyService');
exports.default = angular.module('subModule', [])
.service('myService', MyService_1.default);
我的应用取决于该模块上。所以我在App.ts文件中的以下内容:
// App.ts
import SubModule from 'modules/SubModule';
angular.module('app', [SubModule.name]);
用下面编译的JavaScript:
var SubModule_1 = require('modules/SubModule');
angular.module('app', [SubModule_1.default.name]);
所以,现在我想这个捆绑的浏览器。我目前正在尝试使用Browserify,但我愿意使用任何可用的捆绑工具。 Browserify给我一个错误,如:
无法找到模块“模块/子模块”“C:\中\路径\为\我\应用程序”
所以我怎么做Browserify工作?还是有另一种工具可以更好地工作?我在Github上发现了这个问题,似乎是default exports from TypeScript aren't interoperable with CommonJS。那么我该怎么做?
编辑所以我想我已经找到了问题。 Browserify要求本地路径以./
开头。因此,举例来说,我需要引用我的子模块如下:
import SubModule from './modules/SubModule';
有谁知道一个Browserify插件会自动寻找一个相对路径,即使我不指定./
的?我的应用程序非常庞大,我不想通过并修改所有导入语句。
或者,另一方面,是否有一个TypeScript编译器选项可以为'modules/SubModule'
发出'./modules/SubModule'
?
关于'。/'问题,你可以看一下https://github.com/substack/browserify-handbook#avoiding- – hgoebl