2014-02-23 46 views
23

我有以下一飲而盡任務:咕嘟咕嘟ngmin +醜化不能正常工作

gulp.task('scripts', function() { 
return gulp.src(['app/js/app.js', 'app/config/config.js', 'app/js/controllers.js', 'app/js/directives.js' , 'app/js/filters.js', 'app/js/footer.js', 
       'app/js/guideTour.js', 'app/js/mobileBanner.js', 'app/js/services.js', 'app/js/youtube.js', 'app/js/dataSync.js', 'app/js/addthis.js']) 
//.pipe(jshint('.jshintrc')) 
.pipe(jshint.reporter('default')) 
.pipe(concat('main.js')) 
.pipe(ngmin()) 
.pipe(gulp.dest('app/dist/js')) 
.pipe(rename({suffix: '.min'})) 
.pipe(uglify()) 
.pipe(gulp.dest('app/dist/js')) 
.pipe(livereload(server)) 
.pipe(notify({ message: 'Scripts task complete' })); 
}); 

的問題是,連結文件,這也是ngmin()的輸出,工作正常,但uglifying代碼後,東西休息了,我得到了following error

沒有具體指示器在哪裏開始調試。

堆棧跟蹤:

Error: [$injector:unpr] http://errors.angularjs.org/1.2.9/$injector/unpr?p0=eProvider%20%3C-%20e 
at Error (native) 
at http://localhost:8000/angular/angular.min.js:6:449 
at http://localhost:8000/angular/angular.min.js:32:125 
at Object.c [as get] (http://localhost:8000/angular/angular.min.js:30:200) 
at http://localhost:8000/angular/angular.min.js:32:193 
at c (http://localhost:8000/angular/angular.min.js:30:200) 
at Object.d [as invoke] (http://localhost:8000/angular/angular.min.js:30:417) 
at http://localhost:8000/angular/angular-route.min.js:10:302 
at Object.q [as forEach] (http://localhost:8000/angular/angular.min.js:7:380) 
at http://localhost:8000/angular/angular-route.min.js:10:248 
+0

請參閱https://docs.angularjs.org/tutorial/step_05 – cheziHoyzer

回答

54

解決方案正在運行與mangle選項設置爲false醜化任務。 即:.uglify({mangle: false})

整個代碼:

gulp.task('scripts', function() { 
return gulp.src('app/js/**/*.js') 
.pipe(jshint('.jshintrc')) 
.pipe(jshint.reporter('default')) 
.pipe(concat('main.js')) 
.pipe(ngmin()) 
.pipe(gulp.dest('app/dist/js')) 
.pipe(rename({suffix: '.min'})) 
.pipe(uglify({mangle: false})) 
.pipe(gulp.dest('app/dist/js')) 
.pipe(livereload(server)) 
.pipe(notify({ message: 'Scripts task complete' })); 
}); 
+0

http://stackoverflow.com/quest離子/ 23549029/angular-js -inputmodulerr -a-instance-module-with-mangle/23762068#23762068 – Harry

+1

我唯一的問題就是我需要專門設置不要在角度上修改主工廠和模塊名稱仍然醜化所有的涼亭腳本。我沒有看到一種方法來指定要破解什麼,以及什麼不需要編寫一個新任務,一個用於涼亭組件,一個用於其他腳本。 –

+0

真棒工作夥計,它真的適合我! –

10

客人不願意需要軋液設置爲false,你可以使用ng-annotate並在您gulpfile.js這樣的呼籲:

var ngAnnotate = require('gulp-ng-annotate') 
... 
gulp.task('scripts', function() { 
return gulp.src('app/js/**/*.js') 
.pipe(jshint('.jshintrc')) 
.pipe(jshint.reporter('default')) 
.pipe(concat('main.js')) 
.pipe(ngmin()) 
.pipe(gulp.dest('app/dist/js')) 
.pipe(rename({suffix: '.min'})) 
.pipe(ngAnnotate()) 
.pipe(uglify()) 
.pipe(gulp.dest('app/dist/js')) 
.pipe(livereload(server)) 
.pipe(notify({ message: 'Scripts task complete' })); 
}); 

適用於我單個文件上的應用項目