我正在使用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