Używam składni kodu Angular, TypeScript i ES6. Załóżmy, że mam moduł zdefiniowany następująco:Moduły AngularJS + TypeScript + ES6: jak grupować w przeglądarce?
// SubModule.ts
import MyService from 'services/MyService';
export default angular.module('subModule', [])
.service('myService', MyService);
Skompilowany JavaScript byłoby:
var MyService_1 = require('services/MyService');
exports.default = angular.module('subModule', [])
.service('myService', MyService_1.default);
Moja aplikacja zależy od tego modułu. Więc mam następujące w pliku App.ts:
// App.ts
import SubModule from 'modules/SubModule';
angular.module('app', [SubModule.name]);
z następującymi skompilowanego kodu JavaScript:
var SubModule_1 = require('modules/SubModule');
angular.module('app', [SubModule_1.default.name]);
Więc teraz próbuję to pakiet dla przeglądarki. Obecnie próbuję używać przeglądarki Browserify, ale chcę użyć dowolnego narzędzia do łączenia. Browserify daje mi błąd takich jak:
Nie można odnaleźć modułu 'modules/modułem' z 'C: \ katalogu \ ścieżka \ do \ My \ app'
Więc jak mam zrobić pracę Browserify ? Czy istnieje inne narzędzie, które będzie działało lepiej? Znalazłem ten problem na Github, który wydaje się mówić, że default exports from TypeScript aren't interoperable with CommonJS. Więc co mam zrobić?
EDIT Więc myślę, że znalazłem problem. Browserowanie wymaga, aby ścieżki lokalne zaczynały się od ./
. Tak więc, na przykład, że muszę odwołać mój submoduł następująco:
import SubModule from './modules/SubModule';
Czy ktoś wie o wtyczce Browserify który automatycznie wyszuka ścieżkę względną nawet jeśli nie podasz ./
? Moja aplikacja jest dość duża i nie chcę jej przeglądać i modyfikować wszystkich instrukcji importowania.
Z drugiej strony, czy istnieje opcja kompilatora języka TypeScript do emisji './modules/SubModule'
dla 'modules/SubModule'
?
Odnośnie problemu '. /', Możesz rzucić okiem na https://github.com/substack/browserify-handbook#avoiding- – hgoebl