gulpfile.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. const es = require('event-stream');
  2. const gulp = require('gulp');
  3. const concat = require('gulp-concat');
  4. const connect = require('gulp-connect');
  5. const templateCache = require('gulp-angular-templatecache');
  6. const ngAnnotate = require('gulp-ng-annotate');
  7. const uglify = require('gulp-uglify');
  8. const fs = require('fs');
  9. const _ = require('lodash');
  10. const babel = require('gulp-babel');
  11. const clean = require('gulp-clean')
  12. const scripts = require('./app.scripts.json');
  13. const 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 destinations = {
  32. js: 'build'
  33. };
  34. // 清理目标目录
  35. gulp.task('clean', function () {
  36. gulp.src([destinations.js])
  37. .pipe(clean())
  38. })
  39. gulp.task('build', function () {
  40. return es.merge(gulp.src(source.js.src), getTemplateStream())
  41. .pipe(ngAnnotate())
  42. .pipe(babel())
  43. .pipe(uglify())
  44. .pipe(concat('app.js'))
  45. .pipe(gulp.dest(destinations.js));
  46. })
  47. // 这里功能好像跟bulid重合了
  48. function jsmin() {
  49. return es.merge(gulp.src(source.js.src), getTemplateStream())
  50. .pipe(uglify())
  51. .pipe(concat('app.js'))
  52. .pipe(gulp.dest(destinations.js));
  53. }
  54. gulp.task('watch', function () {
  55. gulp.watch('app/**/*.*').on('change', function (path, stats) {
  56. console.log('File' + path + "was changed")
  57. // 如果要实时打包,可以在这里创建任务
  58. // gulp.task('build')
  59. }).on('unlink', function (path) {
  60. console.log('File ' + path + ' was removed')
  61. });
  62. });
  63. gulp.task('connect', function () {
  64. connect.server({
  65. // livereload:true,//自动更新
  66. port: 8888
  67. });
  68. });
  69. gulp.task('vendor', function () {
  70. _.forIn(scripts.chunks, function (chunkScripts, chunkName) {
  71. const paths = [];
  72. chunkScripts.forEach(function (script) {
  73. const scriptFileName = scripts.paths[script];
  74. if (!fs.existsSync(__dirname + '/' + scriptFileName)) {
  75. throw console.error('Required path doesn\'t exist: ' + __dirname + '/' + scriptFileName, script)
  76. }
  77. paths.push(scriptFileName);
  78. });
  79. gulp.src(paths)
  80. .pipe(concat(chunkName + '.js'))
  81. //.on('error', swallowError)
  82. .pipe(gulp.dest(destinations.js))
  83. })
  84. })
  85. // 添加默认任务 运行gulp即可实现打包
  86. gulp.task('prod', ['vendor', 'build'])
  87. gulp.task('dev', ['vendor', 'build'])
  88. gulp.task('test', ['build', 'watch', 'connect'])
  89. gulp.task('default', ['dev'])
  90. const swallowError = function (error) {
  91. console.log(error.toString());
  92. this.emit('end')
  93. };
  94. const getTemplateStream = function () {
  95. return gulp.src(source.js.tpl)
  96. .pipe(templateCache({
  97. root: 'app/',
  98. module: 'app'
  99. }))
  100. };