gulpfile.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. var gulp = require('gulp');
  2. var wrap = require('gulp-wrap');
  3. var rename = require('gulp-rename');
  4. var concat = require('gulp-concat');
  5. var merge = require('gulp-merge');
  6. var uglify = require('gulp-uglify');
  7. var minifycss = require('gulp-minify-css');
  8. var css2js = require('gulp-css2js');
  9. var header = require('gulp-header');
  10. var clone = require('gulp-clone');
  11. var order = require('gulp-order');
  12. var pkg = require('./package.json');
  13. var func_wrap = '!function () {\n<%=contents%>\n}.call({});';
  14. var banner = [
  15. '/**',
  16. ' * <%= pkg.title %> - <%= subtitle %>',
  17. ' * <%= description %>',
  18. ' * @version v<%= pkg.version %>',
  19. ' * @license <%= pkg.license %>',
  20. ' * @author <%= pkg.author %>',
  21. ' */',
  22. '',
  23. ].join('\n');
  24. gulp.task('build-core', function () {
  25. return gulp.src(['./src/core.js'])
  26. .pipe(wrap(func_wrap))
  27. .pipe(uglify())
  28. .pipe(header(banner, {
  29. pkg: pkg,
  30. subtitle: '精简版',
  31. description: '此版本不集成ua-parser,需要自行设置getUAString',
  32. }))
  33. .pipe(rename('duoshuo-ua-core.min.js'))
  34. .pipe(gulp.dest('./dist'));
  35. });
  36. var embed_js, embed_css;
  37. gulp.task('build-with-ua-parser', function () {
  38. var stream = gulp.src('./src/*.js')
  39. .pipe(order([
  40. '!**/default.js',
  41. ]))
  42. .pipe(concat('duoshuo-ua-parser.js'))
  43. .pipe(wrap(func_wrap))
  44. .pipe(uglify())
  45. .pipe(header(banner, {
  46. pkg: pkg,
  47. subtitle: '集成版',
  48. description: '此版本集成轻量级的ua-parser但不集成CSS,提供默认的UA显示方案',
  49. }));
  50. embed_js = stream.pipe(clone());
  51. return stream
  52. .pipe(rename({suffix: '.min'}))
  53. .pipe(gulp.dest('./dist'));
  54. });
  55. gulp.task('build-css', function () {
  56. var stream = gulp.src('./src/*.css')
  57. .pipe(concat('duoshuo-ua.min.css'))
  58. .pipe(minifycss());
  59. embed_css = stream.pipe(clone());
  60. return stream
  61. .pipe(gulp.dest('./dist'));
  62. });
  63. gulp.task('build-with-ua-parser-css', ['build-with-ua-parser', 'build-css'], function () {
  64. return merge(embed_js, embed_css.pipe(css2js()))
  65. .pipe(concat('duoshuo-ua-parser-css.js'))
  66. .pipe(uglify())
  67. .pipe(header(banner, {
  68. pkg: pkg,
  69. subtitle: 'CSS集成版',
  70. description: '此版本集成ua-parser和默认CSS,提供默认的UA显示方案',
  71. }))
  72. .pipe(rename({suffix: '.min'}))
  73. .pipe(gulp.dest('./dist'));
  74. });
  75. gulp.task('default', ['build-core', 'build-with-ua-parser-css']);