@brud
специально для самых нежных и трепетных

Как правильно минифицировать AngularJs приложение?

Имеется приложение, написанное на ангуляре, написано не очень хорошо, как обычно и бывает, решил для начала привести его к нормальной структуре - вынести контроллеры и все, что к ним прилагается, в отдельные папки, и заинжектить зависимости вручную через SomeController.$inject = ['foo', 'bar'];
После этого умопомрачительного веселья решил собрать это дело в один файл при помощи gulp, вот мой гулпфайл:
gulp.task('scripts', function() {
    return gulp.src(['public/assets/**/*.js', '!public/assets/vendor/**/*.js'])
        .pipe(cached('scripts'))     
        .pipe(jshint())                
        .pipe(header('(function () {')) 
        .pipe(footer('})();'))        
        .pipe(remember('scripts'))    
        .pipe(ngmin())
        .pipe(concat('app.js'))       
        .pipe(gulp.dest('public/'));


ngAnnotate не подключал, т.к. инжектил все вручную, но я справедливо предполагал, что ngmin() выдаст файлы в правильном порядке, но файл с модулем он подключил четвертым или пятым, после того, как я вручную вынес его в начало, все равно остались ошибки...

Что я делаю не так, господа?)
  • Вопрос задан
  • 276 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
его к нормальной структуре - вынести контроллеры и все, что к ним прилагается, в отдельные папки

Этот шаг несет весьма сомнительную пользу ну да не суть.

ngmin() выдаст файлы в правильном порядке

ngmin делает ровно то же что и ngAnnotate только хуже медленнее и вообще deprecated.

Вообще ангуляру мягко скажем без разницы в каком порядке что там объявлено, можно конечно схлопотать проблем если провайдеры будут в самом низу... но это очень редкий кейс. Все разруливает система модулей ангуляра. В крайнем случае есть gulp-order.

файл с модулем он подключил четвертым или пятым

Если вы используете геттеры для модулей а не переменную:

// плохо
var app = angular.module('app', deps);
// ...
app.service('foo', FooService);

// хорошо
angular.module('app').service('foo', FooService);


то ангуляр опять же все разрулит сам за счет ленивой инициализации модулей.

все равно остались ошибки...

Какие ошибки? Вы их не привели. Гадать тут не умеют.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы