gulpfile.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. var gulp = require('gulp-param')(require('gulp'), process.argv),
  2. mocha = require("gulp-mocha"),
  3. istanbul = require('gulp-istanbul'),
  4. bench = require('gulp-bench'),
  5. uglify = require('gulp-uglify'),
  6. rimraf = require('gulp-rimraf'),
  7. bump = require('gulp-bump'),
  8. replace = require('gulp-replace'),
  9. rename = require('gulp-rename'),
  10. browserify = require('gulp-browserify'),
  11. SRC = 'index.js',
  12. DEST = 'dist',
  13. SRC_COMPILED = 'underscore.string.js',
  14. MIN_FILE = 'underscore.string.min.js',
  15. VERSION_FILES = ['./package.json', './component.json', './bower.json'];
  16. VERSION_FILES_JS = [SRC, 'package.js'];
  17. gulp.task('test', ['browserify'], function(cov) {
  18. var reporters = ['html'];
  19. if (cov) {
  20. reporters.push('text');
  21. } else {
  22. reporters.push('text-summary');
  23. }
  24. return gulp.src(['*.js', 'helper/*.js'])
  25. .pipe(istanbul())
  26. .pipe(istanbul.hookRequire())
  27. .on('finish', function () {
  28. return gulp.src(['tests/*.js'])
  29. .pipe(mocha({
  30. ui: 'qunit',
  31. reporter: 'dot'
  32. }))
  33. .pipe(istanbul.writeReports({
  34. reporters: reporters
  35. }));
  36. });
  37. });
  38. gulp.task('bench', ['browserify'], function(func) {
  39. func = func || '*';
  40. return gulp.src('bench/'+ func + '.js')
  41. .pipe(bench());
  42. });
  43. gulp.task('browserify', function() {
  44. return gulp.src(SRC)
  45. .pipe(browserify({
  46. detectGlobals: true,
  47. standalone: 's'
  48. }))
  49. .pipe(rename('underscore.string.js'))
  50. .pipe(gulp.dest(DEST));
  51. });
  52. gulp.task('clean', function() {
  53. return gulp.src(DEST)
  54. .pipe(rimraf());
  55. });
  56. gulp.task('bump-in-js', function(semver) {
  57. return gulp.src(VERSION_FILES_JS)
  58. .pipe(replace(/(version?\s?=?\:?\s\')([\d\.]*)\'/gi, '$1' + semver + "'"))
  59. .pipe(gulp.dest('./'));
  60. });
  61. // usage: gulp bump -s <% Version %>
  62. // usage: gulp bump --semver <% Version %>
  63. gulp.task('bump', ['bump-in-js'], function(semver) {
  64. if (typeof semver !== 'string' || semver.length <= 0) {
  65. console.error('pass a new version `gulp bump --semver 2.4.1`');
  66. process.exit(1);
  67. }
  68. return gulp.src(VERSION_FILES)
  69. .pipe(bump({
  70. version: semver
  71. }))
  72. .pipe(gulp.dest('./'));
  73. });
  74. gulp.task('build', ['test', 'clean'], function() {
  75. gulp.src(DEST + '/' + SRC_COMPILED)
  76. .pipe(uglify())
  77. .pipe(rename(MIN_FILE))
  78. .pipe(gulp.dest(DEST));
  79. });