При попытке заставить Angular (1.x) работать с systemjs я понял, что в настоящее время нет возможности (я знаю) автоматически вставлять $inject
в угловые компоненты, что заставляет компоненты работать, даже когда аргументы функций искалечены майниром. Ручное создание аннотаций $inject
является утомительным, подверженным ошибкам и нарушает принцип DRY.Могут ли плагины SystemJS изменять уже перенесенные файлы?
Существует зрелый модуль npm под названием ng-annotate
, который решает эту проблему и используется во многих подобных ситуациях для комплектации. Поскольку я изучал SystemJS, я вижу, что есть плагиновая система, которая включает в себя возможность перевода исходного кода, что и делает то, что делает ng-annotate
.
Из всего, что я вижу, SystemJS дает вам возможность сопоставить конкретное расширение файла с одним загрузчиком, и все примеры плагинов предназначены для поддержки нового типа файла. То, что я хотел бы сделать, это пост-процесс вывода процесса транспиляции SystemJS вместо добавления нового типа файла. Кажется, что SystemJS должен быть в состоянии сделать это, поскольку у него есть конвейер обработки, но я не могу понять, как правильно вставить его в него. Прямо сейчас я использую Browserify для достижения такого же эффекта, но у меня есть довольно сложный набор задач сборки, и я хотел бы упростить его с помощью SystemJS, если это возможно.
Другие стратегии, позволяющие использовать ng-annotate
в конвейере погрузчика с системой SystemJS, также будут оценены.
Почему вы не используете встроенную аннотацию массива? –
Потому что стиль кода, который я пишу, не способствует этому. Я пишу в Typcript, где большинство моих сервисов заканчиваются как классы, и я регистрирую свои службы с модулем в отдельном файле, а не в том же файле, что и служба. Кроме того, как и с '$ injection', это нарушает * DRY *. Наконец, угловая не является основной темой вопроса. –