gulpfile.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. var es = require('event-stream');
  2. var gulp = require('gulp');
  3. var concat = require('gulp-concat');
  4. var connect = require('gulp-connect');
  5. var templateCache = require('gulp-angular-templatecache');
  6. var ngAnnotate = require('gulp-ng-annotate');
  7. var uglify = require('gulp-uglify');
  8. var fs = require('fs');
  9. var _ = require('lodash');
  10. var babel = require('gulp-babel');
  11. var { createProxyMiddleware } = require('http-proxy-middleware');
  12. var scripts = require('./app.scripts.json');
  13. var source = {
  14. js: {
  15. main: 'app/main.js',
  16. src: [
  17. // application config
  18. 'app.config.js',
  19. // application bootstrap file
  20. 'app/main.js',
  21. // main module
  22. 'app/app.js',
  23. // module files
  24. 'app/**/module.js',
  25. // other js files [controllers, services, etc.]
  26. 'app/**/!(module)*.js'
  27. ],
  28. tpl: 'app/**/*.tpl.html'
  29. }
  30. };
  31. const env = process.argv[2];
  32. if(env === 'dev') {
  33. source.js.src.unshift('env.dev.js');
  34. } else {
  35. source.js.src.unshift('env.prod.js');
  36. }
  37. var destinations = {
  38. js: 'build'
  39. };
  40. gulp.task('build', function(){
  41. return es.merge(gulp.src(source.js.src) , getTemplateStream())
  42. .pipe(babel({
  43. presets: ['babel-preset-env']
  44. }))
  45. .pipe(ngAnnotate())
  46. .pipe(uglify())
  47. .pipe(concat('app.js'))
  48. .pipe(gulp.dest(destinations.js));
  49. });
  50. gulp.task('js', function(){
  51. return es.merge(gulp.src(source.js.src) , getTemplateStream())
  52. .pipe(concat('app.js'))
  53. .pipe(gulp.dest(destinations.js));
  54. });
  55. gulp.task('watch', function(){
  56. gulp.watch(source.js.src, ['js']);
  57. gulp.watch(source.js.tpl, ['js']);
  58. });
  59. gulp.task('connect', function() {
  60. connect.server({
  61. port: 8888,
  62. livereload: true,
  63. middleware: function (connect, opt) {
  64. return [
  65. createProxyMiddleware('/proxy', {
  66. target: 'http://172.16.0.16:9025',//代理的目标地址
  67. changeOrigin: true,//
  68. pathRewrite: {//路径重写规则
  69. '/proxy': ''
  70. }
  71. })
  72. ]
  73. }
  74. });
  75. });
  76. gulp.task('vendor', function(){
  77. _.forIn(scripts.chunks, function(chunkScripts, chunkName){
  78. var paths = [];
  79. chunkScripts.forEach(function(script){
  80. var scriptFileName = scripts.paths[script];
  81. if (!fs.existsSync(__dirname + '/' + scriptFileName)) {
  82. throw console.error('Required path doesn\'t exist: ' + __dirname + '/' + scriptFileName, script)
  83. }
  84. paths.push(scriptFileName);
  85. });
  86. gulp.src(paths)
  87. .pipe(concat(chunkName + '.js'))
  88. //.on('error', swallowError)
  89. .pipe(gulp.dest(destinations.js))
  90. })
  91. });
  92. gulp.task('prod', ['vendor', 'build']);
  93. // gulp.task('prod', ['vendor', 'js', 'watch', 'connect']);
  94. gulp.task('dev', ['vendor', 'js', 'watch', 'connect']);
  95. gulp.task('default', ['dev']);
  96. var swallowError = function(error){
  97. console.log(error.toString());
  98. this.emit('end')
  99. };
  100. var getTemplateStream = function () {
  101. return gulp.src(source.js.tpl)
  102. .pipe(templateCache({
  103. root: 'app/',
  104. module: 'app'
  105. }))
  106. };